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的扩展性非常强。后置处理器作用就是对原有对象的增强,提高系统扩展性。

Spring学习理解---后置处理器相关推荐

  1. JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取

    前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一). ...

  2. Spring中BeanPostProcessors后置处理器到底在哪里拦截

    研究spring源码的时候,发现注入bean到spring对象中有很多种,有一种是@bean注解,并且括号里可以写一些初始化时要执行的方法,还有销毁时执行的方法,spring中后置处理器可以将某些be ...

  3. Spring之BeanPostProcessor(后置处理器)介绍

      为了弄清楚Spring框架,我们需要分别弄清楚相关核心接口的作用,本文来介绍下BeanPostProcessor接口 BeanPostProcessor   该接口我们也叫后置处理器,作用是在Be ...

  4. Spring中的后置处理器BeanPostProcessor讲解

    Spring中提供了很多PostProcessor供开发者进行拓展,例如:BeanPostProcessor.BeanFactoryPostProcessor.BeanValidationPostPr ...

  5. Spring 详解Bean的后置处理器

    Bean的后置处理器详解: Spring当中的后置处理器是Spring体用的一个扩展点,开发者只要去实现,Spring当中的BeanPostProcessor接口,那么就能插手SpringBean实例 ...

  6. Spring学习笔记八--Bean生命周期和后置处理器

    为什么80%的码农都做不了架构师?>>>    Bean生命周期和后置处理器 IOC容器的bean生命周期 1.构造器或工厂方法建立bean实例 2.bean属性赋值,引用其他bea ...

  7. spring的后置处理器(未完结版)

    学习spring源码也有一阶段时间了,是时候收货的季节了,打算写几篇博客,把自己的知识沉淀下来.在学习spring的源码之前,别人问我spring什么牛逼.我会毫不犹豫的说出AOP,IOC啊.但是看看 ...

  8. Spring的9处调用后置处理器

    在Sping的整个生命周期中,有9个地方调用后置处理器.这些后置处理器是spring实现自定义功能或者扩展spring的核心所在 一.实例化前 该方法属于InstantiationAwareBeanP ...

  9. spring源码:九大后置处理器

    目的: spring在完成一个bean的初始化.实例化的过程中,会用到九个后置处理器:本文梳理出这九个后置处理器 九大后置处理器 spring在初始化的过程中,会在九个地方分别调用了五个后置处理的九个 ...

最新文章

  1. p2320bzoj1192 鬼谷子的钱袋
  2. Configuring the VNC server/viewer in Linux.
  3. predicate java_java8中predicate的用法介绍(代码示例)
  4. 现代3D图形编程学习-关于本书(译)
  5. 芝麻信用很高,为什么贷款还是被拒了?
  6. 主要矛盾和次要矛盾_次要GC,主要GC与完整GC
  7. spring cloud gateway集成hystrix全局断路器
  8. python 类初始化参数校验_python之类的任意数量参数初始化
  9. 《Algorithms》SortCompare 实现排序算法的比较
  10. 多目标跟踪——MOT算法的学习笔记
  11. 南昌大学2021年811考研真题+答案详解
  12. 小黄鸟(HTTPCanary)安装及Android高版本CA证书配置
  13. 终极解决电脑缺失dll,应用程序无法正常启动0xc000007b
  14. python打砖块游戏算法设计分析_基于pygame的打砖块游戏,做到一半,不带做了
  15. 想晋升Android架构师——学习这些核心技术够用吗?
  16. 若依管理系统windows本地运行教程
  17. 关于strrchr函数的用法
  18. 面试——Java字节面经(已获Offer)
  19. 解决部署jeesite项目报错 com.thinkgem.jeesite.modules.sys.listener.WebContextListener
  20. J-框架-springCloud-Netfilx-day01

热门文章

  1. 天逸100装不了linux,天逸100怎么进bios 天逸100怎么重装系统【详细介绍】
  2. 深入理解Android中的Drawable类
  3. 网站变灰色(默哀专用)(转)
  4. APP测试-头像测试点
  5. 【rocketMq-1】基础入门
  6. Windows2003server共享文件设置方法与技巧
  7. HTML炉石传说作品,《炉石传说》迷你合集再出新作:2000金币即可兑换全套卡牌...
  8. 远程桌面出现身份验证错误
  9. 荣耀路由2 虚拟服务器,荣耀路由2用手机怎么设置? | 192路由网
  10. ‘反向抽烟’工作引发争议!如何用随心邮缓解工作压力和困扰?