spring-BeanFactoryPostProcessor

BeanFactoryPostProcessor 也是spring的一个扩展点,可以插手bean实例化的过程。
示例:
package com.test3;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.test3")
public class AppConfig {
}
package com.test3;

import org.springframework.stereotype.Component;

@Component
public class Bean2 {
}
package com.test3;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.stereotype.Component;

@Component
public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
    public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
      BeanDefinition beanDefinition =  configurableListableBeanFactory.getBeanDefinition("bean2");
       beanDefinition.setScope("prototype");
    }
}
package com.test3;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MyTest {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext(AppConfig.class);
        System.out.println(context.getBean(Bean2.class));
        System.out.println(context.getBean(Bean2.class));
    }
}

执行结果:

com.test3.Bean2@80ec1f8
com.test3.Bean2@1445d7f
原文地址:https://www.cnblogs.com/yintingting/p/6231910.html