欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring注解开发生命周期原理解析

程序员文章站 2022-06-22 08:17:57
生命周期initmethod和destroymethodbean定义配置类 bean创建--初始化--销毁 可以自定义初始化和销毁方法 初始化:对象创建完成,并赋值完成,调用初始化方法 销毁:...

生命周期

initmethod和destroymethod

bean定义

配置类

  • bean创建--初始化--销毁
  • 可以自定义初始化和销毁方法
  • 初始化:对象创建完成,并赋值完成,调用初始化方法
  • 销毁: 容器关闭进行销毁(单实例)

​ 多实例容器不会管理这个bean

获取容器

initializingbean和disposablebean

bean定义

实现了initializingbean和disposable后,也可以实现初始化和销毁的方法

postconstruct和predestroy

bean定义

beanpostprocessor

bean

定义

加入到bean中,可以发现每个bean初始化前后都会执行功能

  • postprocessbeforeinitialization将在一个bean被完全初始化前进行回调,此时对应的bean已经实例化了,但是对应的属性注入等还没有进行,即在调用initializingbean的afterpropertiesset()方法或bean对应的init-method之前
  • postprocessafterinitialization将在bean被完全初始化后进行回调,此时对应的依赖注入已经完成,即在调用initializingbean的afterpropertiesset()方法或对应init-method方法之后。

postprocessbeforeinitialization方法的返回值会被spring容器作为处理后的bean注册到容器中。如果你在postprocessbeforeinitialization方法中重新构造了一个bean进行返回,而不是返回参数中的bean;那么你返回的bean将会被注册到spring容器中。而原来在spring中配置的bean(被spring实例化的bean)将会被覆盖。

一旦这两个方法返回null,就不会执行后面的postprocessbefore/afterinitialization,(在applybeanpostprocessorsbeforeinitialization中)

步骤:

populatebean给bean赋值

initializebean{ applybeanpostprocessorsbeforeinitialization,

​ invokeinitmethods, // 自定义初始化

​ applybeanpostprocessorsafterinitialization}

底层使用

bean赋值,bean注入,@autowire,生命周期注解功能,@async

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。