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


相关文章
|
1天前
|
XML Java 数据格式
SpringBean的生命周期
SpringBean的生命周期
28 0
|
Java Spring 容器
一文带你深入理解SpringBean生命周期之Aware详解
一文带你深入理解SpringBean生命周期之Aware详解
1160 2
一文带你深入理解SpringBean生命周期之Aware详解
|
1天前
|
Java 开发者 Spring
Bean 的生命周期了解么
Bean 的生命周期了解么
|
10月前
|
Java 容器 Spring
Bean生命周期
Bean生命周期
|
5月前
|
Java Spring 容器
bean的生命周期
bean的生命周期
30 0
|
9月前
|
存储 安全 Java
Bean 的作用域和生命周期
Bean 的作用域和生命周期
47 1
|
9月前
|
XML Java 数据格式
Bean 的生命周期
Bean 的生命周期介绍
|
10月前
|
XML Java 数据格式
SpringBean生命周期
SpringBean生命周期
|
9月前
Bean的生命周期
Bean的生命周期
35 0
|
前端开发 Java Spring
一文带你深入理解SpringBean生命周期之InitializingBean详解
一文带你深入理解SpringBean生命周期之InitializingBean详解
234 0
一文带你深入理解SpringBean生命周期之InitializingBean详解