呼叫靜態工廠方法建立Bean

2021-09-28 23:09:30 字數 2461 閱讀 8809

建立bean的三種方式:

靜態工廠方法例子:

1)介面,用於例項的例項

public

inte***ce

being

2)介面的兩個實現類,靜態工廠方法會產生這兩個實現類的例項

import com.ljj.bj.service.being;

public

class

dogimplements

being

// 實現介面必須實現的testbeing()方法

public

void

testbeing()

}

import com.ljj.bj.service.being;

public

class

catimplements

being

// 實現介面必須實現的testbeing()方法

public

void

testbeing()

}

3)靜態工廠類,包含乙個靜態工廠方法,用於返回乙個being例項

import com.ljj.bj.service.being;

import com.ljj.bj.service.impl.cat;

import com.ljj.bj.service.impl.dog;

public

class

beingfactory

else

}}

4)配置檔案

<

?xml version=

"1.0" encoding=

"utf-8"

?>

<

!-- spring配置檔案的根元素,使用spring-beans.xsd語義約束 --

!-- 下面配置驅動spring呼叫beingfactory的靜態getbeing

()方法來建立bean,

該bean元素包含的constructor-arg元素用於為靜態工廠方法指定引數,因此這段配置

會驅動spring以反射方式來執行如下**:

dog = com.ljj.bj.factory.beingfactory.

getbeing

("dog");

-->

"dog"

class

="com.ljj.bj.factory.beingfactory" factory-method=

"getbeing"

>

<

!-- 配置靜態工廠方法的引數 --

>

"dog"

>

<

/constructor-arg>

<

!-- 驅動spring以「我是狗」為引數來執行dog的setmsg

()方法 --

>

"msg" value=

"我是狗"

>

<

/property>

<

/bean>

"cat"

class

="com.ljj.bj.factory.beingfactory" factory-method=

"getbeing"

>

<

!-- 配置靜態工廠方法的引數 --

>

"cat"

>

<

/constructor-arg>

<

!-- 驅動spring以「我是貓」為引數來執行cat的setmsg

()方法 --

>

"msg" value=

"我是貓"

>

<

/property>

<

/bean>

<

/beans>

5)主程式

import com.ljj.bj.service.being;

public

class

beantest8

}總結:

使用靜態工廠方法建立例項的特點:

指定spring使用靜態工廠方法來建立bean例項時,spring將先解析xml配置檔案,並根據配置檔案指定的資訊,通過反射呼叫靜態工廠類的靜態工廠方法,將該靜態工廠方法的返回值作為bean例項。在這個過程中,spring不再負責建立bean例項,bean例項是由使用者提供的靜態工廠類負責建立的。

Spring配置bean之靜態工廠方法

注意 靜態工廠方法配置bean不是配置靜態工廠方法例項,而是配置bean例項 首先建立car類,設定brand,price兩個屬性 public class car public void setbrand string brand public int getprice public void s...

4 2 使用工廠方法建立Bean

不使用spring建立bean例項,而是把bean建立過程轉移到開發者手中。建立工廠類 package com.erick.d1.hello public class studentfactorystatic id student class com.erick.d1.hello.studentfa...

使用靜態工廠方法和例項工廠方法建立Bean

靜態工廠 工廠初始化之前,工廠中的類已經被例項化放在工廠容器中 例項工廠 工廠再構造方法初始化時,會將類進行例項化放在工廠中 factory method 指向靜態方法的名字 constructor arg 如果工廠方法需要傳入引數,則使用constructor arg來配置引數 1 使用靜態工廠方...