BeanDefinition
1. 스프링이 다양한 설정 형식을 지원하기 위한 주요 기능 중 하나로, 추상화이다.
2. 역할과 구현을 개념적으로 나눈 것이다.
- 스프링 컨테이너는 자바 코드인지, xml 인지 몰라도 된다. 오직 BeanDefinition 만 알면 된다.
3. BeanDefinition을 빈 설정 메타정보라고 한다.
- @Bean(자바), <bean>(xml) 하나당 하나씩의 메타 정보가 생성된다.
4. 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다.
5. BeanDefinition은 인터페이스(구현체)이고, 스프링 컨테이너는 이 추상화만을 의존하면 된다.
아래 이미지를 통해 더 자세히 알아보자.
1. AnnotationConfigApplicationContext 는 AnnotatedBeanDefinitionReader 를 사용해서 AppConfig.class 를 읽고 BeanDefinition 을 생성한다.( = BeanDefinition에 메타 정보들을 저장해놓는다.)
2. GenericXmlApplicationContext 는 XmlBeanDefinitionReader 를 사용해서 appConfig.xml 설정 정보를 읽고 BeanDefinition 을 생성한다.
3. 새로운 형식의 설정 정보가 추가되면 XxxBeanDefinitionReader 를 만들어서 BeanDefinition 을 생성하면 된다.
해당 글은 인프런 > 스프링 핵심 원리 기본편(김영한)강의를 참고하여 작성하였습니다.
'기초이론 > Spring' 카테고리의 다른 글
[인프런]스프링 핵심원리 기본편_컴포넌트 스캔 (0) | 2022.11.30 |
---|---|
[인프런]스프링 핵심원리 기본편_싱글톤 컨테이너 (0) | 2022.11.28 |
[인프런]스프링 핵심원리 기본편_스프링 컨테이너와 스프링 빈(BeanFactory와 ApplicationContext) (0) | 2022.11.06 |
[인프런]스프링 핵심원리 기본편_스프링 컨테이너와 스프링 빈(스프링 컨테이너 생성) (0) | 2022.11.02 |
[인프런]스프링 핵심원리 기본편_스프링으로 전환하기 (0) | 2022.10.30 |