Spring注解开发生命周期原理解析
生命周期
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
spring boot jar的启动原理解析
-
Spring中Bean的生命周期使用解析
-
spring5 源码深度解析----- 被面试官给虐懵了,竟然是因为我不懂@Configuration配置类及@Bean的原理
-
Spring MVC源码(三) ----- @RequestBody和@ResponseBody原理解析
-
基于Spring注解的上下文初始化过程源码解析(一)
-
快速入门Web阅读器开发——epubjs核心工作原理解析
-
Spring+Spring MVC+Mybatis 框架整合开发(半注解半配置文件)
-
Spring 的 Bean 生命周期,11 张高清流程图及代码,深度解析
-
Spring的IOC注解开发入门1
-
Java注解使用及原理解析