首页 > 编程语言 > 详细

10、spring注解学习(bean的生命周期)——BeanPostProcessor【接口】:bean的后置处理器

时间:2020-03-08 12:30:34      阅读:65      评论:0      收藏:0      [点我收藏+]

1、创建Bird类并注入容器中

@Component
public class Bird {
    public Bird() {
        System.out.println("Bird的构造方法执行了");
    }
    
    //对象构造并属性赋值后执行
    @PostConstruct
    public void PostConstruct() {
        System.out.println("Bird的PostConstruct方法执行了");
    }
    
    @PreDestroy
    public void destroy() {
        System.out.println("Bird的销毁方法执行了");
    }
}

2、创建自定义bean的后置处理器并注入容器中

/*
 * 后置处理器,初始化前后进行处理
 */
@Component
public class MyBeanPostProcessor implements BeanPostProcessor {
    
    /*
     * 参数1为容器刚创建的bean,beanName为bean的名字
     */
    //初始化前所需要做的处理
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessAfterInitialization..."+beanName+"=>"+bean);
        //返回的对象可以是原来初始化的bean,也可以是包装之后的bean
        return bean;
    }
    
    //初始化后所需要做的处理
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessBeforeInitialization..."+beanName+"=>"+bean);
        return bean;
    }

}

3、在spring配置类中配置扫描哪些包下的注解并注入容器

/**
 * 测试bean的生命周期的配置
 */
@Configuration
@ComponentScan(value="com.atguigu")
public class MainConfigOfLifeCycle {

}

4、创建测试方法进行测试

    /*
     * 测试自定义bean的后置处理器在bean初始化前后所做工作
     */
    @Test
    public void test04() {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfLifeCycle.class);
        applicationContext.close();
    }

执行结果:

技术分享图片

 

 技术分享图片

 

 

得出结论:

    postProcessAfterInitialization方法:初始化前所需要做的处理
    postProcessBeforeInitialization方法:初始化后所需要做的处理

10、spring注解学习(bean的生命周期)——BeanPostProcessor【接口】:bean的后置处理器

原文:https://www.cnblogs.com/lyh233/p/12441634.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!