學習視頻:【孫哥說Spring5:從設計模式到基本應用到應用級底層分析,一次深入淺出的Spring全探索。學不會Spring?只因你未遇見孫哥】 第十章、對象的生命周期 1.什麼是對象的生命周期 指的是一個對象創建、存活、消亡的一個完整過程 2.為什麼要學習對象的生命周期 由Spring負責對象的創 ...
學習視頻:【孫哥說Spring5:從設計模式到基本應用到應用級底層分析,一次深入淺出的Spring全探索。學不會Spring?只因你未遇見孫哥】
第十章、對象的生命周期
1.什麼是對象的生命周期
指的是一個對象創建、存活、消亡的一個完整過程
2.為什麼要學習對象的生命周期
由Spring負責對象的創建、存活、銷毀,瞭解生命周期,有利於我們使用好Spring為我們創建的對象
3.生命周期的3個階段
-
創建階段
Spring工廠何時創建對象
-
scope=”singleton”
Spring工廠創建的同時,創建對象
註意:如果要在ctx.getBean(””)的時候創建對象可以設置
-
scope=”prototype”
Spring工廠會在獲取對象的同時,創建對象
ctx.getBean(””)
-
-
初始化階段
Spring工廠在創建完對象後,調用對象的初始化方法,完成對應的初始化操作
- 初始化方法提供:程式員根據需求,定義初始化方法,最終完成初始化操作
- 初始化方法調用:Spring工廠進行調用
-
InitalizingBean介面
// 程式員根據需求、實現的方法,完成初始化操作 public void afterProperitesSet()
-
對象中提供一個普通的方法
public void myInit(){ } // 在配置文件中 調用init-method 也可以實現初始化操作 <bean id="product" class="xxx.Product" init-method="mtInit"
-
細節分析
-
如果一個對象即實現InitializingBean 同時又提供普通的初始化方法,那他們的順序是什麼
先執行InitialzingBean再執行普通的初始化方法
-
註入一定發生再初始化操作的前面
-
什麼是初始化操作
資源的初始化:資料庫 IO 網路
-
-
銷毀階段
Spring銷毀對象前,會調用對象的銷毀方法,完成銷毀操作
-
Spring什麼時候銷毀所創建的對象
ctx.close();
-
銷毀方法:程式員根據自己的需求,定義銷毀方法,完成銷毀操作
調用:Spring工廠完成調用
-
DisposableBean (spring提供的介面)
public void destroy()thorws Exception{ }
-
定義一個普通的銷毀方法,在配置文件配置
<bean id="product" destroy-method="myDestroy"/>
-
細節分析
-
銷毀方法的操作只適用於scope=”singleton“
-
什麼叫做銷毀操作
主要指的是 資源的釋放操作,io.close() connection.close();
-
-
第十一章、配置文件參數化
- 把Spring配置文件中需要經常修改的字元串信息,轉移到一個更小的配置文件中。
-
Spring的配置文件中存在需要經常修改的字元串?
存在,以資料庫連接相關的參數 代表
-
經常變化字元串,在Spring的配置文件中,直接修改,不利於項目維護(不好修改)
-
轉移到一個小的配置(.properties)
利於維護(修改)
-
配置文件參數化:利於Spring文件的維護(修改)
1.配置文件參數的開發步驟
-
提供一個小的配置文件(.properities)
jdbc.DriverClassName = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/myschool?useSSL=false&allowPublicKeyRetrieval=true jdbc.username = root jdbc.password = 123456
-
Spring的配置文件與小配置文件進行整合
applicationContext.xmgl <context:property-placeholder location="classpath:/db.properties"/>
-
在Spring配置文件中通過${key}獲取小配置文件中對應的值