Spring載入完畢時,初始化引數
阿新 • • 發佈:2019-02-04
三種方式:1、實現org.springframework.beans.factory.InitializingBean介面。
該介面實現其afterPropertiesSet方法,InitializingBean可以注入相關的service,如果在Spirng處理InitializingBean時出錯,那麼Spimport ring將直接丟擲異常。
程式碼如下:
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import cn.symdata.common.core.LogUtils; import cn.symdata.payment.liandong.LianDongConfig; @Component public class TestInit implements InitializingBean { @Autowired private LianDongConfig config; @SuppressWarnings("rawtypes") @Override public void afterPropertiesSet() throws Exception { LogUtils.info(this.getClass(), "TestInit", ""); } }
2、使用@Autowired註解
@Autowired加在方法上,可以在spring載入完畢時自動執行,並且可以將用到的引數,自動注入
程式碼如下:
@Autowired
public void initFieldsValue(LianDongConfig config) {
LogUtils.info(this.getClass,"initFieldsValue","");
}
//引數LianDongConfig 可以自動注入
3、配置init-method屬性:在需要進行操作的bean的xml定義中加上init-method屬性,指定下啟動時執行哪個方法
init-method是通過反射執行的,而afterPropertiesSet是直接執行的。所以 afterPropertiesSet的執行效率比init-method要高,不過init-method消除了bean對Spring依賴。在實際使用時我推薦使用init-method。
如果一個bean被定義為非單例的,那麼afterPropertiesSet和init-method在bean的每一個例項被建立時都會執行。單例 bean的afterPropertiesSet和init-method只在bean第一次被例項時呼叫一次。大多數情況下 afterPropertiesSet和init-method都應用在單例的bean上。