BeanDefinitionRegistryPostProcessor
Spring에서 Bean을 동적으로 생성하는 방법 중 하나.
스프링에서는 보통 정적으로 Bean을 생성한다.
근데 DcmDatasource 같은 경우는 properties파일을 읽어다가 여러 개의 DcmDataSource Bean을 생성해야 한다. (configuration에서 dcm properties수가 몇개가 될 지 모르는 상황)
결국 동적으로 Bean을 생성해줘야하는 상황이다. 이럴 때 사용할 수 있다.
ex) configuration에 언급된 에이전트 개수 (DB A서버,DB B서버..) 만큼 datasource를 만들어야 하는 상황
샘플코드
BeanDefinitionRegistryPostProcessor를 사용하기 위해서는 인터페이스를 통해 구현 클래스를 개발하면 된다.
Override되어야 하는 함수는 다음과 같다.
- postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanFactory): BeanFactory를 이용하여 빈 정보를 등록하는 경우 이용
- postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory): BeanDefinitionRegistry를 이용하여 빈 정보를 등록하는 경우 이용
=> 사용자가 Bean Definition을 커스터마이징 할 수 있게끔 함.
모든 Definition들이 로드된 이후에 스프링의 startup 프로세스에 의해 호출된다.
아직 어떠한 빈도 초기화되지 않은 상태
참조
https://csy7792.tistory.com/315
[Spring] Bean은 어떻게 등록되는 것일까?
요즈음 재미로 Spring의 Controller를 모방하던 도중 Request가 올때마다 new Instance()를 통하여 매번 Class (Controller 객체) 를 생성 해야했다. 너무 비효율적이라고 느꼇고 나중에 BeanFactory도 만들어야겠..
csy7792.tistory.com
https://ysjee141.github.io/blog/server-side/BeanDefinitionPostProcessor/
BeanDefinitionRegistryPostProcessor의 사용
Spring에서 어플리케이션이 시작될 때 동적으로 Bean을 생성하기 위해서는 다양한 방법이 존재한다. 앞서에는 Application Context 의 Event Listener를 통해 동적 Bean을 생성하는 방법을 소개한 적이 있는데
ysjee141.github.io
'Java > Spring Framework' 카테고리의 다른 글
RestClient 알아보기 (0) | 2024.08.30 |
---|---|
Annotation 정리 (0) | 2022.10.30 |
Auto Configuration (0) | 2022.10.30 |