스프링 컨테이너
- ApplicationContext
인터페이스이며 스프링 컨테이너라고 함
자바기반과 XML 기반으로 생성할 수 있음
스프링 컨테이너가 생성되면서 내부에 빈 저장소가 생성
스프링 컨테이너 생성시 구성정보를 전달 해야 함 (AppConfig.class)
스프링 컨테이너 생성 되면서 @Bean 어노테이션이 등록된 메서드를 모두 호출하여 Bean 객체를 등록
=> 이때 의존관계가 설정 됨
빈 객체 name은 모두 다르게 설정 해주어야 함
스프링 빈
ApplicationContext에서 getBean을 통해 가져올 수 있음
빈이름,타입 혹은 타입으로 가져올 수 있음
상속관계에 의한 부모 - 자식관계에서 부모타입을 조회하면 자식타입까지 같이 조회가 됨
최상위인 Object를 조회할 경우 모든 스프링 빈 객체가 조회가 됨
Bean Factory
BeanFactory -> ApplicationContext -> AnnotationCofigApplicationContext
AnnotationCofigApplicationContext는 ApplicationContext를 상속 받고 ApplicationContext는 BeanFactory를 상속받음
- BeanFactory
스프링 컨테이너의 최상위 인터페이스
스프링 빈을 관리하고 조회하는 역할을 함
getBean() 메서드 제공
- ApplicationContext
BeanFactory의 기능을 상속 받아 제공
다양한 기능을 제공(이벤트, 메시지리소스, 환경변수 등)
#메시지 리소스 국제화기능
한국에서 들어오면 한국어, 영어권에서 들어오면 영어
#환경변수
로컬, 개발, 운영 등 구분
#애플리케이션 이벤트
이벤트를 발행하고 구독하는 모델 관리
#리소스 조회
편리한 리소스 조회 제공
다양한 설정 방법(XML, 자바 코드)
- 어노테이션 기반 자바 코드 설정
new AnnotationConfigApplicationContext(설정.class) 이용
자바 코드로 된 설정 파일을 넘겨줌
- XML 기반 설정
GenericXmlApplicationContext 이용
레거시에서 주로 사용되고 요즘에는 사용되지 않음
컴파일 없이 빈 설정정보 변경 가능
스프링 빈 메타 정보 - BeanDefinition
역할과 구현을 개념적으로 나눔
자바코드인지 XML 인지 구분 없이 BeanDefinition을 만들어서 사용
BeanDefinition을 빈 설정 메타 정보라고 함
스프링 컨테이너는 BeanDefinition에만 의존
AnnotationConfigApplcationContext는 AnnotatedBeanDefinitionReader를 사용해 설정 클래스 파일을 읽어 BeanDefinition을 만들고 스프링 컨테이너는 해당 인터페이스를 참조하게 됨
'BackEnd 학습 > Spring Framework' 카테고리의 다른 글
Spring(스프링) - 컴포넌트 스캔 (0) | 2023.02.02 |
---|---|
Spirng(스프링) - 싱글톤 컨테이너 (0) | 2023.01.31 |
Spring(스프링) - 객체지향 적용 및 스프링 기본 (0) | 2022.11.13 |
Spring(스프링) - 순수 Java를 이용 (0) | 2022.09.24 |
Spring(스프링)을 위한 사전 지식 (0) | 2022.09.24 |