Java/Spring Framework

Bean 생성

재심 2022. 10. 30. 14:16

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