Bean的扩展
- 这两个接口都是可以在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进行拦截。
原文地址:https://www.cnblogs.com/javammc
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。