工廠方法配置bean
阿新 • • 發佈:2017-11-28
const @override shm ack getc ring 工廠 null ati
1:靜態工廠方法配置bean
1):對象
package com.spring.helloworld; public class Car { private String name; private double jia; public void setName(String name) { this.name = name; } public void setJia(double jia) { this.jia = jia; } @Override public String toString() {return "Car [name=" + name + ", jia=" + jia + "]"; } public Car(String name, int jia) { super(); this.name = name; this.jia = jia; } }
2):靜態工廠方法
package com.spring.helloworld; import java.util.HashMap; import java.util.Map; public class StaticCarFactory {private static Map<String ,Car> cars=new HashMap<String,Car>(); static{ cars.put("audi", new Car("audi",30000)); cars.put("ford", new Car("ford",40000)); } public static Car getCar(String name){ return cars.get(name); } }
3):配置文件
<!--
class屬性:指向靜態工廠方法的全類名
factory-method:指向靜態工廠方法的名稱
constructor-arg:如果工廠方法需要傳入參數,則使用構造器配置參數
-->
<bean id="car" class="com.spring.helloworld.StaticCarFactory"
factory-method="getCar">
<constructor-arg value="ford"></constructor-arg>
</bean>
2:實例工廠方法
package com.spring.helloworld; import java.util.HashMap; import java.util.Map; public class InstanceCarFactory { private Map<String ,Car> cars=null; public InstanceCarFactory(){ cars=new HashMap<String,Car>(); cars.put("audi", new Car("audi",30000)); cars.put("ford", new Car("ford",30000)); } public Car getCar(String name){ return cars.get(name); } }
<!-- 配置工廠的實例 --> <bean id="carFactory" class="com.spring.helloworld.InstanceCarFactory"></bean> <!-- 通過實例工廠方法來配置bean factory-bean:指向實例工廠方法的全類名 factory-method:指向靜態工廠方法的名字 constructor-arg:如果工廠方法需要傳入參數,則使用構造器配置參數 --> <bean id="car" factory-bean="carFactory" factory-method="getCar"> <constructor-arg value="ford"></constructor-arg> </bean>
工廠方法配置bean