SpringBean的生命周期

简介: SpringBean的生命周期

Spring Bean Lifecycle

1 过程

1)调用无参构造


2)执行 set 方法设置属性


也可以是 @Bean 注解方法内容


3)调用 BeanNameAware 的 setBeanName 方法


可以获得 Bean 的名字


4)调用 BeanClassLoaderAware 的 setBeanClassLoader 方法


可以获得 ClassLoader 对象的实例


5)调用 BeanFactoryAware 的 setBeanFactory 方法


可以获得 BeanFactory,主要用来检测作用域


6)调用 EnvironmentAware 的 setEnviroment 方法


可以获得当前环境下所有配置解析


7)调用 EmbeddedValueResolverAware 的 setEmbeddedValueResolver 方法


设置配置解析器


8)调用 ResourceLoaderAware 的 setResourceLoader 方法


可以获得当前加载的所有资源文件


9)调用 ApplicationEventPublisherAware 的 setApplicationEventPublisher 方法


可以获得所有上下文的发布事件


10)调用 MessageSourceAware 的 setMessageSource 方法


处理 MessageSource 类型的 Bean


11)调用 ApplicationContextAware 的 setApplicationContext 方法


可以获得上下文对象,主要获取所有 Bean的名字


12)调用 ServletContextAware 的 setServletContext 方法


实现该方法,可以使用 ServletContext 来执行自己想要的操作。


13)执行 BeanPostProcessor 的 postProcessBeforeInitialization 方法


在每一个 Bean 初始化之前执行的方法(有多少 Bean 调用多少次)


14)执行标注 @PostConstruct 注解的方法


一般标注在 init 方法上,表示初始化方法)


15)执行 InitializingBean 的 afterPropertiesSet 方法


在『当前 Bean 』的属性设置之后才会进行调用(设置 Bean 的属性包括:@Value,@Resource 等)


某个 Bean 的 afterPropertiesSet 方法执行完毕,才会执行下一个 Bean 的 afterPropertiesSet 方法,依据实例化顺序来算。


16)执行配置的 init-method


配置指定的初始化方法


底层使用反射实现


17)执行 BeanPostProcessor 的 postProcessAfterInitialization 方法


在所有 Bean 初始化之后执行的方法(有多少 Bean 调用多少次)


2 额外注意

SmartInitializingSingleton

所有非lazy单例 Bean 加载完成后的回调方法,不是初始化完成,而是加载完成


ApplicationListener

最后调用 onApplicationEvent方法,因为 onApplicationEvent 会被频繁执行,基于观察者模式,需要使用它监听,必须要考虑性能问题。每当在一个 ApplicationEvent 发布到 ApplicationContext 时,这个 Bean 会到通知。 作者:沉默的反补 https://www.bilibili.com/read/cv5926940/ 出处:bilibili


相关文章
|
6月前
|
XML Java 数据格式
SpringBean的生命周期
SpringBean的生命周期
64 0
|
6月前
|
前端开发 Java 开发者
Bean的生命周期和作用域
Bean的生命周期和作用域
|
2月前
|
Java 开发者 Spring
Bean生命周期介绍
Spring Boot 的 Bean 生命周期管理是其核心功能之一,负责应用程序中 Java 对象(称为 Beans)的创建、配置、初始化和销毁。此功能提供了灵活的依赖注入方式,便于组件化开发。Bean 生命周期包括实例化、属性注入、初始化方法调用、使用及销毁方法调用等阶段。应用场景涵盖依赖注入、配置管理、组件扩展及切面编程。通过实现特定接口或注解,开发者可轻松管理对象生命周期,优化应用性能。示例代码展示了如何通过日志观察 Bean 生命周期的不同阶段。
107 3
|
6月前
|
XML Java 数据格式
Spring框架学习 -- Bean的生命周期和作用域
Spring框架学习 -- Bean的生命周期和作用域
54 2
|
6月前
|
存储 设计模式 Java
Bean 作用域和生命周期
Bean 作用域和生命周期
|
Java 容器 Spring
Bean生命周期
Bean生命周期
|
6月前
|
Java 开发者 Spring
Bean 的生命周期了解么
Bean 的生命周期了解么
|
前端开发 Java Spring
一文带你深入理解SpringBean生命周期之InitializingBean详解
一文带你深入理解SpringBean生命周期之InitializingBean详解
566 0
一文带你深入理解SpringBean生命周期之InitializingBean详解
|
11月前
|
Java Spring 容器
bean的生命周期
bean的生命周期
55 0
|
存储 安全 Java
Bean 的作用域和生命周期
Bean 的作用域和生命周期
72 1