建立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 使用靜態工廠方...