BeanDefinition 이라는 개념은 Bean을 정의한 것.
즉, 우리가 앞서 grooby, java, xml로 SpringContainer를 만들 수 있었는데 이는 BeanDefinition이라는 추상화가 있기에 가능했던 것이다.
그래서 우리는 BeanDefinition을 빈 설정 메타 정보라고 한다.
이말은 @Bean
혹은 <bean>
에 각각 하나씩 메타 정보가 생성된다는 것이다.
AnnotationConfigApplicationContext
는 AnnotatedBeanDefinitionReader
를 사용해서 AppConfig.class
를 읽고 BeanDefinition
을 생성한다.
GenericXmlApplicationContext
는 XmlBeanDefinitionReader
를 사용해서 appConfig.xml
설정 정보를 읽고 BeanDefinition
을 생성한다.
새로운 형식의 설정 정보가 추가되면, XxxBeanDefinitionReader
를 만들어서 BeanDefinition
을 생성하면 된다.
이는 BeanDefinition을 직접 생성해서 스프링 컨테이너에 등록할 수 있다. => 실무에서 거의 X
스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화 해서 사용하는것으로 이해하면 된다.