码迷,mamicode.com
首页 > 其他好文 > 详细

初始化Bean的扩展InitializingBean和BeanPostProcessor

时间:2020-03-28 21:42:51      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:row   int   自身   sso   pre   set   sse   component   ret   

Bean的扩展

  1. 这两个接口都是可以在Bean创建过程中进行拦截,那么他们有什么区别呢?

示例如下:

InitializingBean 接口实现类:

@Component
public class MyInitBean implements InitializingBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("InitializingBean afterPropertiesSet");
    }
}

BeanPostProcessor 接口实现类:

@Component
public class MyBeanProcess implements BeanPostProcessor {

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        if(bean instanceof UserService){
            System.out.println("UserService");
        }
        System.out.println("BeanPostProcessor postProcessBeforeInitialization");
        return null;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("BeanPostProcessor postProcessAfterInitialization");
        return null;
    }
}

启动项目,运行结果如下:
技术图片

结果分析:
InitializingBean 接口实现类只执行了一次,而BeanPostProcessor接口实现类执行了多次。

结论:
说明InitializingBean可以对自身的实现类的这个Bean进行拦截,而BeanPostProcessor是对所有Bean进行拦截。

初始化Bean的扩展InitializingBean和BeanPostProcessor

标签:row   int   自身   sso   pre   set   sse   component   ret   

原文地址:https://www.cnblogs.com/javammc/p/12589544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!