zoukankan      html  css  js  c++  java
  • 初始化Bean的扩展InitializingBean和BeanPostProcessor

    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进行拦截。

  • 相关阅读:
    71)PHP,使用cookie的语法问题
    70)PHP,cookie的安全传输和HTTPonly
    69)PHP,cookie的有效域
    68)PHP,cookie的详细属性和有效期
    C#中的internal关键字
    C# 中如何将一个类文件(XX.CS)封装成.dll文件
    c# 委托和事件(总结篇)
    c#事件实例三
    c#事件实例二
    c#事件实例一
  • 原文地址:https://www.cnblogs.com/javammc/p/12589544.html
Copyright © 2011-2022 走看看