스프링 빈 설정 메타 정보 - BeanDefinition
- 스프링은 어떻게 이런 다양한 설정 형식을 지원하는 것일까? 그 중심에는 'BeanDefinition' 이라는 추상화가 있습니다.
- 쉽게 이야기해서 '역할과 구현을 개념적으로 나눈 것' 입니다.!!
- XML을 읽어서 BeanDefinition을 만들면 됩니다.
- 자바 코드를 읽어서 BeanDefinition을 만들면 됩니다.
- 스프링 컨테이너는 자바 코드인지, XML인지 몰라도 됩니다. 오직 BeanDefinition만 알면 됩니다.
- BeanDefinition을 빈 설정 메타정보라고 합니다.
- @Bean, <bean> 당 각각 하나씩 메타 정보가 생성됩니다.
- 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성합니다.
정리
- BeanDefinition을 직접 생성해서 스프링 컨테이너에 등록할 수도 있습니다. 하지만 실무에서 BeanDefinition을 직접
정의하거나 사용할 일은 거의 없습니다. -> 어려우면 그냥 넘어가면 된다!
- BeanDefinition에 대해서는 너무 깊이있게 이해하기 보다는, 스프링이 다양한 형태의 설정 정보를 BeanDefinition으로
추상화해서 사용하는 것 정도만 이해하면 됩니다.
- 가끔 스프링 코드나 스프링 관련 오픈 소스의 코드를 볼 때, BeanDefinition이라는 것이 보일 때가 있습니다.
이때 이러한 메커니즘을 떠올리면 됩니다.
'Spring 기본편' 카테고리의 다른 글
@Configuration과 싱글톤 (0) | 2023.03.22 |
---|---|
웹 애플리케이션과 싱글톤 (0) | 2023.03.20 |
4장-(7). 다양한 설정 형식 지원 - 자바코드,XML (0) | 2023.03.12 |
전체 흐름 정리 (0) | 2022.06.12 |
5. [Spring] AppConfig 리팩터링 (0) | 2022.03.30 |