728x90
1. 스프링 컨테이너 ?
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
ApplicationContext를 스프링 컨테이너라고 한다.
2. AnnotationConfigApplicationContext 와 GenericXmlApplicationContext
ApplicationContext는 인터페이스이다.
JAVA :
AnnotationConfigApplicationContext 는 인터페이스를 구현한 구현체이다.
AnnotationConfigApplicationContext는 java 클래스를 이용해서 bean을 등록하는 방식이고 최근에 주로 사용된다.
XML :
ApplicationContext을 구현한 GenericXmlApplicationContext도 있다.
이것은 과거에 주로 사용되었으며 xml기반의 설정 파일을 필요로한다.
XML, JAVA 코드 이외의 다른 형식의 설정파일도 가능하다.
이렇게 다양한 형식의 설정파일이 가능한 이유가 무엇일까?
3. BeanDefinition
BeanDefinition은 빈 설정 메타정보라고 한다.
이렇게 다양한 설정 형식을 지원할 수 있는 이유는 BeanDefinition 이라는 추상화 덕분이다.
스프링 컨테이너는 이 config가 자바코드인지, XML인지 몰라도 BeanDefinition만 알면 된다.
AnnotationConfigApplicationContext 는
1. AnnotatedBeanDefinitionReader를 사용해서 Appconfig.class를 읽고
2. BeanDefinition(빈 설정 메타정보)를 생성한다.
그 후 스프링 컨테이너가 이 메타정보를 기반으로 스프링 빈을 생성한다.
결론 :
스프링은 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용한다.
반응형
'개발공부 > [spring]김영한_스프링입문' 카테고리의 다른 글
의존관계 주입 방법에는 뭐가 있을까? (0) | 2022.08.08 |
---|---|
싱글톤과 스프링 컨테이너 (0) | 2022.08.04 |
DI(의존관계 주입)와 DI 컨테이너 (0) | 2022.08.04 |
좋은 객체 지향 설계의 원칙(SOLID) (0) | 2022.08.04 |
[2]스프링 빈과 의존관계 _ 컴포넌트 스캔, 자바코드로 직접 등록 (0) | 2022.07.20 |