spring bean 生命周期=实属初销+2个常见接口+3个Aware型接口+2个生命周期接口


  • 实属初销:spring bean生命周期只有四个阶段,即实例化->属性赋值->初始化->销毁,实例化对应构造方法,属性赋值对应setter

前三个阶段分别在doCreate()中按顺序调对应的方法:

  1. createBeanInstance() -> 实例化
  2. populateBean() -> 属性赋值
  3. initializeBean() -> 初始化

源码:


  • 两个常用接口:InstantiationAwareBeanPostProcessor+BeanPostProcessor

1、这两个接口功能非常强大,spring内部也常使用它们,其中InntantiationAwareBeanPostProcessor接口继承BeanPostProcessor接口,它们含有的内部方法如下:

BeanPostProcessor=postProcessBeforeInitialization()+postProcessAfterInitialization()

InstantiationAwareBeanPostProcessor=postProcessBeforeInstantiation()、postProcessAfterInstantiation()+继承BeanPostProcessor的上面两个接口

2、InstantiationAwareBeanPostProcessor接口作用于实例化前后,BeanPostProcessor作用于初始化前后:


 

 可知,postProcessorBeforeInstantiation在doCreateBean()=“实属初”之前

4、postProcessorAfterInstantiation在populateBean执行属性赋值之前调用

  • 3个Aware型接口

如(1)BeanNameAware、BeanFactoryAware、BeanClassLoaderAware

(2)ApplicationContextAware(获取当前的ApplicationContext对象)。

xxxAware接口表示我们可以拿到spring中什么东西,如BeanNameAware代表我们可以拿到spring中的BeanName。

ApplicationContext接口与BeanFactory接口的区别是ApplicationContext继承了BeanFactory,同时扩展了其他功能方法。

调用上面(1)中的三个Aware接口->

调用BeanPostProcessor的postProcessBeforeInitialization()接口->

InitializeBean()初始化->

调用BeanPostProcessor的postProcessAfterInitialization()接口

  • 2个生命周期接口

上面"初始化InitializeBean()初始化"接口和"disposableBean()销毁"接口分别对应生命周期4个阶段中的初始化和销毁阶段


©著作权归作者所有:来自51CTO博客作者mb6066e453ca35b的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 电商快递物流的电子面单打印接口API案例代码
  2. 电商快递物流电子面单图片接口API案例代码
  3. 电商快递物流电子面单HTML接口API案例代码
  4. 电商快递物流电子面单复打API接口案例
  5. 快递物流接口API如何获取第三方电商平台账号授权案例
  6. 【实战案例】Ajax请求第三方接口数据利用模板引擎渲染天气预报页
  7. 方圆-罗辑思维Go语言微服务改造实践
  8. 快递100电商快递地图轨迹推送服务API接口案例代码
  9. 快递100查询地图轨迹API接口案例代码

随机推荐

  1. 详细介绍如何使用javascript+xml实现分页
  2. 如何使用DOM创建XML的详细介绍
  3. 教你怎样快速从一个XML文件中查找信息的
  4. java读取XML文件的四种方式及比较的代码
  5. 一个简单的XML Schema的示例代码详解
  6. XML特殊字符和空格 换行 转义符的代码详
  7. 通过XML数据岛和Dom制作通讯录的代码实例
  8. xml解析工具包 Xstream的示例代码详解
  9. 详细介绍使用XMLHTTP发送超长XML表单数据
  10. XML创建可排序、分页的数据显示页面