Spring使用工廠模式配置bean的三種方式
阿新 • • 發佈:2019-02-10
配置bean的三種方法
1.通過靜態工廠方法
class: 指向靜態工廠類的全類名
factory-method: 指向靜態工廠中返回bean 例項的方法
constructor-arg: 可以傳入引數選擇返回的bean 例項
Cars: 一個Map型別的集合,裡面存放了Car
2.通過例項工廠方法
首先建立例項工廠的bean 例項
通過例項工廠來獲得bean 例項
factory-bean: 指向動態工廠的bean 例項
factory-method: 指向靜態工廠中返回bean 例項的方法
constructor-arg: 可以傳入引數選擇返回的bean 例項
3.通過實現FactoryBean介面
通過factorybean 來配置bean的例項
class: 指向FactoryBean 的全類名
property: 配置FactoryBean 的屬性 但實際返回例項卻是FactoryBean 的getObject() 方法返回的例項
// 實現FactoryBean介面
1.通過靜態工廠方法
class: 指向靜態工廠類的全類名
factory-method: 指向靜態工廠中返回bean 例項的方法
constructor-arg: 可以傳入引數選擇返回的bean 例項
<bean id="car" class="package.StaticCarFactory" factory-method="getCar">
<constructor-arg value="BMW"></constructor-arg>
</bean>
Cars: 一個Map型別的集合,裡面存放了Car
public static Car getCar(String brand) { return Cars.get(brand) }
2.通過例項工廠方法
首先建立例項工廠的bean 例項
<bean id="factory" class="package.InstanceCarFactory"></bean>
通過例項工廠來獲得bean 例項
factory-bean: 指向動態工廠的bean 例項
factory-method: 指向靜態工廠中返回bean 例項的方法
constructor-arg: 可以傳入引數選擇返回的bean 例項
<bean id="car" factory-bean="factory" factory-method="getCar"> <constructor-arg value="BMW"></constructor-arg> </bean>
3.通過實現FactoryBean介面
通過factorybean 來配置bean的例項
class: 指向FactoryBean 的全類名
property: 配置FactoryBean 的屬性 但實際返回例項卻是FactoryBean 的getObject() 方法返回的例項
<bean id="car" class="package.CarFactoryBean">
<property name="brand" value="BMW"></property>
</bean>
// 實現FactoryBean介面
public class CarFactoryBean implements FactoruBean<Car> { private String brand; public void setBrand(String brand) { this.brand = brand; } /** * 返回bean 的例項 */ @Override public Car getObeject() throws Exception { return new Car(brand, 1300000); } /** * 返回bean 例項的型別 */ @Override public Class<?> getObjectType() { return Car.class; } /** * 是否是單例 */ @Override public boolean isSingleton() { return true; } }