-
[Spring] 스프링 컨테이너와 스프링 빈인프런 - 스프링/핵심 원리 2023. 7. 18. 02:04
스프링 컨테이너와 스프링 빈
- ApplicationContext를 스프링 컨테이너라 한다.
더 정확히는 스프링 컨테이너를 부를 때 BeanFactory, ApplicationContext로 구분해서 이야기한다.
- 스프링 컨테이너에서 관리하는 객체를 빈이라고 한다.
빈 조회 예시 코드
public class MemberApp { public static void main(String[] args) { ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = applicationContext.getBean("memberService", MemberService.class); ... } }
BeanFactory와 ApplicationContext
BeanFactory
- 스프링 컨테이너의 최상위 인터페이스다.
- 스프링 빈을 관리하고 조회하는 역할을 담당한다.
ApplicationContext
- 부가 기능을 제공한다.
- 메시지소스를 활용한 국제화 기능
- 환경변수
- 애플리케이션 이벤트
- 편리한 리소스 조회
다양한 설정 형식 지원 - 자바 코드, XML
- 스프링 컨테이너는 다양한 형식의 설정 정보를 받아드릴 수 있게 유연하게 설계되어 있다.
XmlAppConfig 사용 자바 코드
xml 기반의 스프링 빈 설정 정보
다양한 설정 형식을 지원할 수 있는 이유? - BeanDefinition
- BeanDefinition은 빈 설정 메타정보다.
- 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다.
- AnnotationConfigApplicationContext는 AnnotatedBeanDefinitionReader를 사용해서 AppConfig.class를 읽고 BeanDefinition을 생성한다.
BeanDefinition 정보
- BeanClassName: 생성할 빈의 클래스 명(자바 설정 처럼 팩토리 역할의 빈을 사용하면 없음)
- factoryBeanName: 팩토리 역할의 빈을 사용할 경우 이름, 예) appConfig
- factoryMethodName: 빈을 생성할 팩토리 메서드 지정, 예) memberService
- Scope: 싱글톤(기본값)
- lazyInit: 스프링 컨테이너를 생성할 때 빈을 생성하는 것이 아니라, 실제 빈을 사용할 때까지 최대한 생성을 지연처리 하는지 여부
- InitMethodName: 빈을 생성하고, 의존관계를 적용한 뒤에 호출되는 초기화 메서드 명
- DestroyMethodName: 빈의 생명주기가 끝나서 제거하기 직전에 호출되는 메서드 명
- Constructor arguments, Properties: 의존관계 주입에서 사용한다. (자바 설정 처럼 팩토리 역할의 빈을 사용하면 없음)
출처: 인프런 김영한님의 스프링 핵심 원리 - 기본편
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보세요! 📢
www.inflearn.com
'인프런 - 스프링 > 핵심 원리' 카테고리의 다른 글
[Spring] 싱글톤 방식의 주의점 (0) 2023.07.19 [Spring] assertj의 isSameAs와 isEqualTo의 차이 (0) 2023.07.19 [Spring] 싱글톤 패턴과 싱글톤 컨테이너 (0) 2023.07.19 [Spring] 웹 애플리케이션과 싱글톤 (0) 2023.07.19 [Spring] IoC, DI, 컨테이너 (0) 2023.07.18