有乙個bean為 a,乙個bean為b。想要a在容器例項化的時候的乙個屬性name賦值為b的乙個方法funb的返回值。
如果只是在a裡單純的寫著:
private b b;
private string name = b.funb();
會報錯說nullpointexception,因為這個時候b還沒被set進來,所以為null。
解決辦法為如下**,同時學習下spring中 initializingbean ,物件 構造方法 , init-method 的執行順序。
public class a implements initializingbean
public a()
public void init()
@override
public string tostring()
public void afterpropertiesset() throws exception
}public class b
public b()
}spring配置檔案
測試**:
public static void main(string args)
程式輸出為:
a initialed
b initialed
a.setb initialed
afterpropertiesset
init
funb
從這裡看到a的name屬性在bean載入完成的時候也被成功設定為b的funb方法的返回值了,要點就是用init-method來實現。
載入順序也可以看到為:
先建構函式——>然後是b的set方法注入—— >initializingbean 的afterpropertiesset方法——>init- method方法
總結為:
spring例項化Bean理解
技術 2009 10 17 15 56 45 閱讀127 字型大小 大 中小訂閱 有乙個bean為a,乙個bean為b。想要a在容器例項化的時候的乙個屬性name賦值為b的乙個方法funb的返回值。如果只是在a裡單純的寫著 private b b private string name b.funb...
spring例項化bean的方式
主要利用三種注入方式 介面注入 不推薦 getter,setter方式注入 比較常用 構造器注入 死的應用 關於getter和setter方式的注入 有三種匹配方式 構造器注入 2 使用靜態工廠方法例項化 利用examples.examplebean2 的靜態方法createinstance例項化乙...
Spring中Bean的例項化
spring中bean的例項化 在介紹bean的三種例項化的方式之前,我們首先需要介紹一下什麼是bean,以及bean的配置方式。如果把spring看作乙個大型工廠,那麼spring容器中的bean就是該工廠的產品。要想使用spring工廠生產和管理bean,就需要在配置檔案中指明需要哪些bean,...