본문 바로가기

기초이론/Spring

[인프런]스프링 핵심원리 기본편_스프링 컨테이너와 스프링 빈(스프링 빈 설정 메타 정보 - BeanDefinition)

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 을 생성하면 된다.


해당 글은 인프런 > 스프링 핵심 원리 기본편(김영한)강의를 참고하여 작성하였습니다.