Bean 后置处理器



IOC容器自动识别后置处理器
InitBeforBean 改bean实现BeanFactoryPostProcessor 该接口,
更改 BeanLife bean的属性值和作用域

@Test
public void valueTest(){

    ApplicationContext context = new AnnotationConfigApplicationContext("com.huo.SprinBootDmeo");//获取该文件夹下所有的工厂bean
    //ApplicationContext context = new AnnotationConfigApplicationContext(BeanLife.class);
    BeanLife beanLife = context.getBean(BeanLife.class);
  //  System.out.println(beanLife.getRemark());
    AbstractApplicationContext abstractApplicationContext = (AbstractApplicationContext) context;
    abstractApplicationContext.registerShutdownHook();

}


@Component
public class InitBeforBean implements BeanFactoryPostProcessor {

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
        System.out.println("BeforeInitialization 初始化bean之前========================: " );
        BeanDefinition bd = configurableListableBeanFactory.getBeanDefinition("beanLife");
        MutablePropertyValues pv = bd.getPropertyValues();
        pv.addPropertyValue("remark","属性值改一下");
        //bean的作用域也该一下
        bd.setScope(BeanDefinition.SCOPE_SINGLETON);

    }


}

@Component
public class BeanLife {

   private String remark;


    public BeanLife(){
        System.out.println("构造函数");
    }

    @PostConstruct
    public void init(){
        System.out.println("初始化bean后调用");
    }

    @PreDestroy
    public void destroy(){
        System.out.println("销毁bean之前调用");
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}
运行结果:
BeforeInitialization 初始化bean之前========================:
构造函数
初始化bean后调用
bean销毁后调用




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值