Skip to Content
Suffering builds character

8. Bean definition

1.BeanDefinition

BeanDefinition이란 Bean 관련 정보를 구성한 클래스이자 객체

이러한 Bean 관련 정보는 .XML 파일, Annotation 매핑 등 다양한 방식으로 구성될 수 있는데,
이러한 구성 정보는 BeanDefinition이라는 클래스로 랩핑(Wrapping), 추상화되어 활용됨

이렇게 구성된 BeanDefinition 정보를 기반으로 스프링 컨테이너는 애플리케이션에서 실제로 사용될 빈을 구성함

따라서 스프링 컨테이너는 BeanDefinition 객체로 래핑된 것만 사용하기 때문에,
사실 스프링은 구성 정보가 .XML 파일 기반인지, Annotation 기반 설정인지에 대해서는 관심이 없음

Annotation 기반으로 스프링 컨테이너를 구성할 때 사용했던 AnnotationConfigApplicationContext 클래스의 경우, 자신의 필드로 AnnotationBeanDefinitionReader라는 타입의 필드를 가지고 있음

AnnotationConfigApplicationContext.java
public class AnnotationConfigApplicationContext extends GenericApplicationContext implements AnnotationConfigRegistry { private final AnnotatedBeanDefinitionReader reader; private final ClassPathBeanDefinitionScanner scanner; }
💡
Tip

AnnotatedBeanDefinitionReader
빈 설정 정보 파일을 읽는 역할을 수행 후 BeanDefinition객체를 생성하는 역할 수행

XML 설정 파일은 XmlBeanDefinitionReader가 담당

Last updated on