Spring初始化載入InitializingBean()方法
阿新 • • 發佈:2019-02-08
1、spring初始化bean有兩種方式
1)實現InitializingBean介面,繼而實現afterPropertiesSet的方法 ;
2)利用類反射原理,配置載入檔案,使用init-method標籤直接注入bean。
2、相同點:
實現注入bean的初始化。
3、不同點:
實現的方式不一致。
介面比配置效率高,但是配置消除了對spring的依賴。而實現InitializingBean介面依然採用對spring的依賴。
4、InitializingBean介面定義的原始碼如下所示:
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package org.springframework.beans.factory; public interface InitializingBean { void afterPropertiesSet() throws Exception; }
該方法在實現之後,會在程式載入完成之後執行。
5、由於程式碼在專案啟動的時候會執行afterPropertiesSet()方法,如果方法中包含修改欄位的資訊,那麼多次啟動就會造成多次修改欄位的內容。該方法常用的場景是資料庫連結中使用。如果多次連結會造成一定的資源浪費。
除了修改欄位型別外當然也可以做別的事,如:檢查某表是否存在 存在的話裡面的某值是否存在 不存在則新增。
6、這個方法將在所有的屬性被初始化後呼叫。但是會在init前呼叫。如果程式碼是延遲載入,則馬上執行。所以可以在類上加上@Lazy(false)註解,其中新增的內容如下:
import org.springframework.context.annotation.Lazy; @Lazy(false)
這樣spring容器初始化的時候afterPropertiesSet就會被呼叫,只需要實現InitializingBean介面就行。