Spring学习理解---后置处理器

Spring学习理解之-后置处理器

spring后置处理器有几种?后置处理器的作用

后置处理器有两种:
(1)bean的后置处理器:这种处理器会对容器中的bean进行后处理,对bean进行增强
(2)容器的后置处理器:针对IOC容器的后处理,对容器功能增强

1、bean后置处理器

Bean后置处理器是一种特殊的bean,主要负责容器中的其他bean执行后处理 ,如代理类的生成等,这种bean被称为bean后置处理器。它会在bean创建成功后对bean进行增强处理。bean后置处理器必须实现BeanPostProcessor接口,同时实现两个方法:
(1)postProcessorBeforeInitializtion(Object obj,String name);前置处理,第一个参数系统将进行后置处理的bean对像,第二参数该bean的配置id。
(2)postProcessorAfterInitializion(Object obj,String name);
bean后置处理器在容器中注册后,会自动启动,容器中的每个bean在创建时会自动执行后置处理器,Bean后置处理器两个方法执行回调的时机如下图:
在这里插入图片描述
在bean注入依赖关系之后,bean初始化过程中,进行回调BeanPostProcess接口的postProcessBeforeInitialization和postProcessAfterInitialization两个方法,对bean进行增强。

了解spring中bean的初始化过程如下: 
容器启动
----->收集BeanDefinition(解析xml定义的bean信息)
----->实例化之前可以对bean做一些启动动作(spring提供了InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation进行扩展)
----->根据加载的BeanDefinition信息通过反射实例化bean
----->实例化首先判断是否设置了super对象,如果有则调用super的get得到父类对象,根据BeanDefinition的信息确认bean实例化的方式通过工厂bean进行实例化或构造方法
----->实例化后赋值之前MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition()进行加工(扩展)
----->为对象属性赋值
----->赋值后也有扩展点InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation()
----->进行依赖注入(循环依赖)
----->处理属性如:@Autowired @Resource@value等注解,通过上面的扩展点实现
----->完成属性赋值后spring执行回调
----->进行初识化,初始化之前提供了扩展点:BeanPostProcessor.postProcessorBeforeInitialization方法,可以对完成依赖注入的bean进行增强处理
----->初始化,查看是否实现初始化方法,调用初始化方法
----->初始化后spring提供了扩展点:BeanPostProcessor.postProcessorAfterInitialization方法进行扩展,可以bean进行最终的增强处理。
总结:Spring中的Aop就是基于初始化后实现的,初始化后返回的对象才是最终的对象。

注意一点如果使用BeanFactory作为spring容器,必须手动注册bean后置处理器才能生效。

(2)容器后置处理器

容器后置处理负责容器本身的后置处理,必须实现BeanFactoryPostProcessor接口,并实现方法postProcessorBeanFactory(ConfigurableListableBeanFactory beanFactory)对容器进行扩展

总结:spring后置处理器为使用者提供很大的帮助,为程序后续扩展奠定了基础,让开发任务可以进行自定义扩展,在对象的初始化前后进行扩展处理,体现出spring的扩展性非常强。后置处理器作用就是对原有对象的增强,提高系统扩展性。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

强1223

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

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

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

打赏作者

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

抵扣说明:

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

余额充值