Spring例項化bean的三種方式

2022-08-24 15:30:15 字數 4211 閱讀 2547

在物件導向程式設計的過程中,要想呼叫某個類的成員方法,首先要例項化該類的成員變數。

在spring 中,例項化bean有三種方式:

1、構造器例項化;2、靜態工廠方式例項化;3、例項化工廠方式例項化

構造器例項化:spring容器通過bean對應的類中預設的構造器函式例項化bean.

1-1、建立乙個實體類 person1

package

com.mengma.instance.constructor;

public

class

person1

定義了乙個 id 為 person1 的 bean,其中 class 屬性指定了其對應的類為 person1

<?

xml version="1.0" encoding="utf-8"

?>

<

beans

xmlns

=""xmlns:xsi

=""xmlns:p

=""xsi:schemalocation

="/spring-beans-3.2.xsd"

>

<

bean

id="person1"

class

="com.mengma.instance.constructor.person1"

/>

beans

>

1-3、建立測試類,在 com.mengma.instance.constructor 包下建立乙個名為 instancetest1 的測試類

package

com.mengma.instance.constructor;

import

org.junit.test;

import

import

public

class

instancetest1

}

上述檔案中,首先在 test() 方法中定義了 spring 配置檔案的路徑,然後 spring 容器會載入配置檔案。在載入的同時,spring 容器會通過實現類 person1 中預設的無參建構函式對 bean 進行例項化。

在 spring 中,也可以使用靜態工廠的方式例項化 bean。此種方式需要提供乙個靜態工廠方法建立 bean 的例項。下面通過案例演示如何使用靜態工廠方式例項化 bean。

1. 建立實體類

在專案的 src 目錄下建立乙個名為 com.mengma.instance.static_factory 的包,並在該包下建立乙個實體類 person2,該類與 person1 相同,不需要新增任何成員。

2. 建立靜態工廠類

在 com.mengma.instance.static_factory 包下建立乙個名為 mybeanfactory 的類,並在該類中建立乙個名為 createbean() 的靜態方法,用於建立 bean 的例項,如下所示。

package

com.mengma.instance.static_factory;

public

class

mybeanfactory

}

3. 建立 spring 配置檔案

<?

xml version="1.0" encoding="utf-8"

?>

<

beans

xmlns

=""xmlns:xsi

=""xmlns:p

=""xsi:schemalocation

="/spring-beans-3.2.xsd"

>

<

bean

id="person2"

class

="com.mengma.instance.static_factory.mybeanfactory"

factory-method

="createbean"

/>

beans

>

上述**中,定義了乙個 id 為 person2 的 bean,其中 class 屬性指定了其對應的工廠實現類為 mybeanfactory,而 factory-method 屬性用於告訴 spring 容器呼叫工廠類中的 createbean() 方法獲取 bean 的例項。

4. 建立測試類

在 com.mengma.instance.static_factory 包下建立乙個名為 instancetest2 的測試類,編輯後如下所示。

package

com.mengma.instance.static_factory;

import

org.junit.test;

import

import

public

class

instancetest2

}

在 spring 中,還有一種例項化 bean 的方式就是採用例項工廠。在這種方式中,工廠類不再使用靜態方法建立 bean 的例項,而是直接在成員方法中建立 bean 的例項。

同時,在配置檔案中,需要例項化的 bean 也不是通過 class 屬性直接指向其實例化的類,而是通過 factory-bean 屬性配置乙個例項工廠,然後使用 factory-method 屬性確定使用工廠中的哪個方法。下面通過案例演示例項工廠方式的使用。

1. 建立實體類

在專案的 src 目錄下建立乙個名為 com.mengma.instance.factory 的包,在該包下建立乙個 person3 類,該類與 person1 類相同,不需要新增任何成員。

2. 建立例項工廠類

在 com.mengma.instance.factory 包下建立乙個名為 mybeanfactory 的類,編輯後如下所示。

package

com.mengma.instance.factory;

public

class

mybeanfactory

//建立bean的方法

public

person3 createbean()

}

上述**中,使用預設無參的構造方法輸出 person3 工廠例項化中語句,使用 createbean 成員方法建立 bean 的例項。

3. 建立 spring 配置檔案

<?

xml version="1.0" encoding="utf-8"

?>

<

beans

xmlns

=""xmlns:xsi

=""xmlns:p

=""xsi:schemalocation

="/spring-beans-3.2.xsd"

>

<

bean

id="mybeanfactory"

class

="com.mengma.instance.factory.mybeanfactory"

/>

<

bean

id="person3"

factory-bean

="mybeanfactory"

factory-method

="createbean"

/>

beans

>

上述**中,首先配置了乙個例項工廠 bean,然後配置了需要例項化的 bean。在 id 為 person3 的 bean 中,使用 factory-bean 屬性指定乙個例項工廠,該屬性值就是例項工廠的 id 屬性值。使用 factory-method 屬性確定使用工廠中的 createbean() 方法。

4. 建立測試類

在 com.mengma.instance.factory 包下建立乙個名為 instancetest3 的測試類,編輯後如下所示。

package

com.mengma.instance.factory;

import

org.junit.test;

import

import

public

class

instancetest3

}

spring 三種例項化bean

利用person類的無引數建構函式例項化person類 package com.spring public class person public person string name,int age public string getname public void setname string ...

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例項化乙...