복붙노트

[SPRING] 생명주기 이벤트에서 BeanFactoryPostProcessor 및 BeanPostProcessor

SPRING

생명주기 이벤트에서 BeanFactoryPostProcessor 및 BeanPostProcessor

나는 BeanFactoryPostProcessor와 BeanPostProcessor의 차이점을 이해하려고 노력했다.

BeanFactoryPostProcessor가 Bean 정의에서 작동한다는 것을 알았습니다. 즉, Bean 인스턴스가 생성되기 전에 BeanFactoryPostProcessor가 실행되고 Bean이 인스턴스화되고 라이프 사이클 이벤트가 호출 된 후에 BeanPostProcessor가 실행됩니다.

이것은 BeanFactoryPostProcessor가 BeanPostProcessor가 Spring 라이프 사이클 이벤트의 일부인 반면 인스턴스 생성 전에 호출 된 스프링 라이프 사이클 이벤트의 일부가 아니라는 것을 의미합니까? 내 이해가 옳은지를 친절히 확인하십시오.

해결법

  1. ==============================

    1.BeanFactoryPostProcessor는 인터페이스이며 그것을 구현하는 빈은 실제로 Spring 라이프 사이클을 거치는 빈 (아래 예제)이지만이 빈은 선언 된 다른 빈의 라이프 사이클에 참여하지 않습니다.

    BeanFactoryPostProcessor는 인터페이스이며 그것을 구현하는 빈은 실제로 Spring 라이프 사이클을 거치는 빈 (아래 예제)이지만이 빈은 선언 된 다른 빈의 라이프 사이클에 참여하지 않습니다.

    public class CustomBeanFactory implements BeanFactoryPostProcessor {
    
        @Override
        public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
            for (String beanName : beanFactory.getBeanDefinitionNames()) {
    
                BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
    
                // Manipulate the beanDefiniton or whatever you need to do
    
            }
        }
    }
    

    BeanFactoryPostProcessor 및 BeanPostProcessor에 대한 차이점은 다음과 같습니다.

  2. ==============================

    2.BeanFactoryPostProcessor는 Bean 객체 인스턴스화 전에 실행됩니다 (즉, Applicationcontext 컨테이너가 초기화 될 때)

    BeanFactoryPostProcessor는 Bean 객체 인스턴스화 전에 실행됩니다 (즉, Applicationcontext 컨테이너가 초기화 될 때)

    BeanPostprocessor는 bean 객체가 생성 된 후에 init ()과 init () 전에 실행될 수 있기 때문에 실행됩니다.

  3. from https://stackoverflow.com/questions/30455536/beanfactorypostprocessor-and-beanpostprocessor-in-lifecycle-events by cc-by-sa and MIT license