1. 程式人生 > >Spring初始化載入InitializingBean()方法

Spring初始化載入InitializingBean()方法

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介面就行。