網(wǎng)站首頁 編程語言 正文
Bean的生命周期
Bean的生命周期包括四個階段:
-
實例化階段(Instantiation):容器通過調(diào)用構(gòu)造函數(shù)或者工廠方法來創(chuàng)建Bean的實例。
-
屬性賦值階段(Populate properties):容器將相應的屬性值設置給Bean的實例,可以通過setter方法、直接字段注入或者其他自定義的方式完成屬性賦值。
-
初始化階段(Initialization):在Bean的屬性賦值完成后,容器會調(diào)用相關的初始化方法(如果有的話),如實現(xiàn)了InitializingBean接口的afterPropertiesSet()方法,或者通過@Bean注解的initMethod屬性指定的方法。開發(fā)者可以在初始化方法中進行一些額外的操作,例如數(shù)據(jù)校驗、初始化資源等。
-
使用階段(In use):
-
經(jīng)過初始化階段后,Bean進入可用狀態(tài),可以被容器及其他對象使用。
-
銷毀階段(Destruction):當Bean不再被使用時,容器可以對其進行銷毀操作。這包括調(diào)用實現(xiàn)了DisposableBean接口的destroy()方法,或者通過@Bean注解的destroyMethod屬性指定的方法。開發(fā)者可以在銷毀方法中釋放資源、關閉連接等。
兩種方式在Bean創(chuàng)建完后打印語句(Bean的初始化階段)
實現(xiàn)InitializingBean接口:
-
創(chuàng)建一個類,實現(xiàn)InitializingBean接口。
-
在該類中實現(xiàn)afterPropertiesSet()方法,在該方法中編寫創(chuàng)建Bean后要執(zhí)行的操作,例如打印語句。
-
當Bean被創(chuàng)建后,容器會自動調(diào)用afterPropertiesSet()方法。
代碼示例:
import org.springframework.beans.factory.InitializingBean; public class MyBean implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { System.out.println("Bean已創(chuàng)建。"); } }
使用@Bean注解和initMethod屬性:
-
在Bean對應的配置類中,使用@Bean注解定義Bean的創(chuàng)建方法。
-
在@Bean注解中,使用initMethod屬性指定在Bean創(chuàng)建后要調(diào)用的初始化方法。
-
在初始化方法中,編寫需要執(zhí)行的操作,例如打印語句。
代碼示例:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean(initMethod = "init") public MyBean myBean() { return new MyBean(); } } public class MyBean { public void init() { System.out.println("Bean已創(chuàng)建。"); } }
最后
無論使用哪種方式,當Bean被創(chuàng)建后,打印語句將會在初始化階段執(zhí)行。
具體使用哪種方式都可以,當然根據(jù)具體的場景選擇適合的方式最好。
原文鏈接:https://blog.csdn.net/weixin_43347550/article/details/131460054
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-06-16 C語言通過案例講解并發(fā)編程模型_C 語言
- 2022-07-22 mybatis源碼之集成spring原理詳解
- 2022-05-14 Python的進程,線程和協(xié)程實例詳解_python
- 2024-01-15 Mybatis 開啟控制臺打印sql語句
- 2022-05-16 C#?CM框架實現(xiàn)多頁面管理的實例代碼_C#教程
- 2022-05-01 Python中的bytes類型用法及實例分享_python
- 2022-09-14 Python定制類你不知道的魔術(shù)方法_python
- 2022-05-18 基于python介紹pytorch保存和恢復參數(shù)_python
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支