技術
2009-10-17 15:56:45
閱讀127
字型大小:大
中小訂閱
有乙個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 b()
}spring配置檔案
測試**:
程式輸出為:
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的過程
1. 呼叫disposablebean的destroy();
2. 呼叫定製的destroy-method方法;
spring例項化bean的方式
主要利用三種注入方式 介面注入 不推薦 getter,setter方式注入 比較常用 構造器注入 死的應用 關於getter和setter方式的注入 有三種匹配方式 構造器注入 2 使用靜態工廠方法例項化 利用examples.examplebean2 的靜態方法createinstance例項化乙...
spring載入bean例項化順序
有乙個bean為 a,乙個bean為b。想要a在容器例項化的時候的乙個屬性name賦值為b的乙個方法funb的返回值。如果只是在a裡單純的寫著 private b b private string name b.funb 會報錯說nullpointexception,因為這個時候b還沒被set進來,...
Spring中Bean的例項化
spring中bean的例項化 在介紹bean的三種例項化的方式之前,我們首先需要介紹一下什麼是bean,以及bean的配置方式。如果把spring看作乙個大型工廠,那麼spring容器中的bean就是該工廠的產品。要想使用spring工廠生產和管理bean,就需要在配置檔案中指明需要哪些bean,...