Spring學習之使用靜態工廠方法以及實例工廠方法配置bean


首先創建一個Car類作為bean方便工廠方法的使用

public class Car {

public String toString() {
return "Car [name=" + name + ", price=" + price + "]";
}
private String name;
private double price;
public Car()
{

}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Car(String name,double price)
{
this.name=name;
this.price=price;
}

}


接下來,首先是如何使用靜態工廠方法來返回bean實例

1.寫一個靜態工廠並在靜態代碼塊中添加bean

public class StaticFactory {
private static Map<String, Car> cars=new HashMap<String, Car>();
static{
cars.put("奧迪", new Car("奧迪", 300000.0));
cars.put("福特",new Car("福特", 250000.0));
}
public static Car getCar(String name)
{
return cars.get(name);
}


}

2.在xml文件中進行配置

   <!-- 
通過靜態工廠方法來配置bean,不是配置靜態工廠方法實例,而是配置bean實例
class屬性:指向靜態工廠的全類名
factory-method:指向靜態工廠方法的方法名
constructor-arg如果工廠方法需要傳入參數,則使用constructor-arg來配置參數
-->
<bean id="car1" 
class="factory.StaticFactory"
factory-method="getCar">
<constructor-arg value="奧迪"></constructor-arg>
</bean>     

使用實例工廠方法來返回bean實例

1.編寫一個實例工廠

public class InstanceFactory {
private Map<String, Car> cars=new HashMap<String, Car>();
public InstanceFactory()
{
cars.put("奧迪", new Car("奧迪", 300000.0));
cars.put("福特", new Car("福特", 250000.0));
}
public  Car getCar(String name)
{
return cars.get(name);
}
}

2.在xml文件中進行配置

 <!-- 通過實例工廠方法來配置bean
factory-bean:實例工廠的全類名
factory-method:指向靜態工廠方法的方法名
constructor-arg如果工廠方法需要傳入參數,則使用constructor-arg來配置參數
 -->
<!-- 配置工廠的實例 -->
<bean id="factory" class="factory.InstanceFactory"></bean>
<!-- 通過實例工廠來配置bean -->
<bean id="car2"  factory-bean="factory" factory-method="getCar">
<constructor-arg value="奧迪"></constructor-arg>
</bean>


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com