Spring4-bean生命周期-3-【Bean】的理解和【统一处理器 】BeanPostProcessor接口

一、容纳Bean

   使用spring应用上下文

 FileSystemXmlApplicationContext:指定文件路径下寻找xml
 ClassPathXmlApplicationContext:所有类路径下(包含jar文件)下查询xml 
 AnnotationConfigApplicationContext:注解的spring容器加载方式
 ApplicationContext context = new ClassPathXmlApplicationContext("xx.xml")

   获取到bean

 getBean()

二、Bean的生命周期

实例化:spring对bean进行实例化
填充属性:spring将值和Bean的引用注入到Bean对应属性
调用BeanNameAware的setBeanName():如果Bean实现了该接口,Spring将Bean的ID传递给setBeanName()
调用BeanFactoryAware的setBeanFactory():如果Bean实现了该接口,Spring将BeanFactory容器实例传入
调用ApplicationContextAware的setApplicationContext():如果Bean实现了该接口,Spring将bean所在的上下文引用传入
调用BeanPostProcessor的预初始化方法:Spring调用他们的postProcessorBeforeInitlization()
调用InitializingBean的afterPropertiesSet():Spring调用他们的afterPropertiesSet().类似的bean使用init-method,该方法被调用
调用自定义的初始化方法 
调用BeanPostProcessor的初始化方法 :Spring调用他们的postProcessorAfterInitlization()
bean使用
容器关闭
调用DisposableBean的destroy()
调用自定义的销毁方法

三、bean接口

     作用:BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创建过程中(具体为Bean初始化前后)会回调BeanPostProcessor中定义的两个方法。

public interface BeanPostProcessor {
        //每一个bean对象的初始化方法调用之前回调
        Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
        //每一个bean对象的初始化方法调用之后被回调
    	Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
} 

四、使用

   实现了BeanPostProcessor接口,在spring 容器中注册bean后,会自动应用在容器中。在所有Bean实例化之后进行前后作用。

这里很重要,是他和BeanFactoryPostProcess的本质区别。

 五、BeanPostProcessor --- 又被称为 :统一处理器 的作用

  • Spring在IOC容器完成bean的实例化、配置和初始化后可以通过BeanPostProcessor(后处理器)对创建的bean进行各种处理。你可以在这里修改bean的属性或者增强bean,spring AOP创建jdk代理或者cglib代理的过程就是在BeanPostProcessor(后处理器)中实现的。因此我将Spring AOP 技术看做是:Spring AOP = BeanPostProcessor + 代理。
  • BeanPostProcessor的作用域范围是容器级的。它只和你所使用的容器有关。如果你在容器中定义一个实现了BeanPostProcessor的类,它仅仅对此容器中的bean进行后置处理。
  • 如果配置了多个BeanPostProcessor,那么可以通过实现Ordered接口设置'order'属性来控制BeanPostProcessor的执行次序。
     

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良之才-小良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值