spring例項化Bean理解

2021-08-31 08:36:05 字數 1259 閱讀 6045

技術

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

[email protected]

從這裡看到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,...