国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

史上最完整的Spring Bean的生命周期

2022-12-20 12:53 作者:suuh  | 我要投稿

Spring Bean 的生命周期

1.加載Bean定義

通過 loadBeanDefinitions 掃描所有xml配置、注解將Bean記錄在beanDefinitionMap中

2.創(chuàng)建Bean對象

通過 createBean 遍歷 beanDefinitionMap 創(chuàng)建bean

2.1.構(gòu)建對象

  1. 容器通過 createBeanInstance 進(jìn)行對象構(gòu)造
  2. 獲取構(gòu)造方法:@Autowired
  3. 準(zhǔn)備參數(shù) 根據(jù)類查找>參數(shù)名查找
  4. 構(gòu)造對象
  5. 無參對象直接實(shí)例化

2.2.填充屬性

通過populateBean方法為Bean內(nèi)部所需的屬性進(jìn)行賦值

  • 通常是 @Autowired 注解的變量

2.3.初始化Bean對象

通過initializeBean對填充后的實(shí)例進(jìn)行初始化

填充初始化容器相關(guān)信息

通過 invokeAwareMethods 方法:為實(shí)現(xiàn)aware接口【信息感知接口】的Bean 設(shè)置注入beanName、beanFactory等容器信息

初始化構(gòu)造方法

通過 invokeInitMethods 方法進(jìn)行初始化:

如果Bean實(shí)現(xiàn)InitializingBean接口進(jìn)行處理【未實(shí)現(xiàn)則不進(jìn)行】

  • afterPropertiesSet方法【bean填充屬性后執(zhí)行】
  • initMethod 方法
Bean的后置處理

invokeInitMethods 的前后進(jìn)行

  • applyBeanPostProcessorsBeforeInitialization
  • invokeInitMethods
  • applyBeanPostProcessorsAfterInitialization

在后置處理中處理了包括:AOP【AnnotationAwareAspectJAutoProxyCreator】

負(fù)責(zé) 構(gòu)造后@PostConstruct銷毀前@PreDestroy 的 InitDestoryAnnotationBeanPostProcessor 等


注冊銷毀

通過reigsterDisposableBean處理實(shí)現(xiàn)了DisposableBean接口的Bean的注冊

3.添加到單例池

通過 addSingleton 方法,將Bean 加入到單例池 singleObjects

4.銷毀

4.1.銷毀前

調(diào)用 bean中@PreDestory 注解的方法

通過 postProcessBeforeDestruction 方法調(diào)用destoryBean逐一銷毀Bean

4.2.銷毀

調(diào)用 destoryBeans

4.3.執(zhí)行客戶自定義銷毀

調(diào)用 invokeCustomDestoryMethod


史上最完整的Spring Bean的生命周期的評論 (共 條)

分享到微博請遵守國家法律
平定县| 武宣县| 罗城| 绥中县| 永昌县| 修水县| 太白县| 宁河县| 镇平县| 壤塘县| 新沂市| 道孚县| 梧州市| 论坛| 鄂托克旗| 泌阳县| 巫山县| 茶陵县| 申扎县| 旬邑县| 内江市| 北海市| 抚松县| 德保县| 阳东县| 周至县| 克东县| 沂源县| 镇宁| 信阳市| 宜阳县| 手游| 松原市| 广丰县| 古丈县| 宁乡县| 普陀区| 疏勒县| 临安市| 高青县| 托里县|