Spring Bean的生命周期

Spring Bean的生命周期
1、spring会扫描指定包(@ComponentScan(“包路径”))下面的标有注解的类,解析类得到BeanDefinition对象。Spring是根据beanDefinition来创建Spring bean的。
2、实例化bean得到一个对象(如果有多个构造方法,则要判断是有哪个构造方法(constructor.newInstance()))
3、对对象中的加了@Autowired注解的属性进行属性填充
4、回调Aware方法,比如BeanNameAware,BeanFactoryAware
5、调用BeanPostProcessor的初始化前的方法
6、调用初始化方法
7、调用BeanPostProcessor的初始化后的方法,在这里会进行AOP
8、如果当前创建的bean是单例的则会把bean放入单例池
9、使用bean
10、Spring容器关闭时调用DisposableBean中destory()方法

Spring Bean的生命周期分为四个阶段和多个扩展点。扩展点又可以分为影响多个Bean和影响单个Bean。整理如下:
四个阶段

实例化 Instantiation
属性赋值 Populate
初始化 Initialization
销毁 Destruction
多个扩展点

影响多个Bean
BeanPostProcessor
postProcessBeforeInitialization
postProcessAfterInitialization
InstantiationAwareBeanPostProcessor
postProcessBeforeInstantiation
postProcessAfterInstantiation
postProcessPropertyValues
MergedBeanDefinitionPostProcessor
postProcessMergedBeanDefinition
SmartInstantiationAwareBeanPostProcessor
determineCandidateConstructors
getEarlyBeanReference
影响单个Bean
Aware
Aware Group1(调用invokeInitMethods方法)
BeanNameAware
BeanClassLoaderAware
BeanFactoryAware
Aware Group2(调用Aware和BeanPostProcessor# postProcessBeforeInitialization方法)
EnvironmentAware
EmbeddedValueResolverAware
ApplicationContextAware(ResourceLoaderAware\ApplicationEventPublisherAware\MessageSourceAware)
生命周期
InitializingBean
DisposableBean

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring生命周期包括实例化、配置和销毁三个阶段。首先,实例化阶段是指创建一个Bean的实例。在Spring中,Bean的实例化可以通过使用BeanFactory或ApplicationContext来获取。其次,配置阶段是指对实例化的Bean进行配置,也就是进行IOC注入。在这个阶段,Spring会根据配置文件中的Bean的id值进行相应的配置。如果Bean实现了BeanNameAware接口,Spring还会调用它实现的setBeanName(String)方法,传递的参数就是Bean的id值。最后,销毁阶段是指当Bean不再使用时进行垃圾回收。对于Singleton模式的Bean,Spring会负责管理整个生命周期;而对于Prototype模式的Bean,Spring在创建好并交给使用者后就不再管理后续的生命周期。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [关于Spring Bean的生命周期](https://blog.csdn.net/Apeopl/article/details/82964799)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Springbean生命周期详解](https://blog.csdn.net/qq_64169170/article/details/123052663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值