靜态工廠方法配置bean
- 配置一個靜态工廠方法
package com.spring.factory;
import java.util.HashMap;
import java.util.Map;
public class CarFactory {
private static Map<String,Car> map = new HashMap<String,Car>();
static{
map.put("Audi", new Car("Audi",));
map.put("Ford", new Car("Ford",));
}
public static Car getCar(String brand){
return map.get(brand);
}
}
- 在配置檔案中配置bean:
<bean id="car1" class="com.spring.factory.CarFactory" factory-method="getCar">
<constructor-arg value="Ford"></constructor-arg>
</bean>
通過靜态工程方法建立bean,使用factory-method指定建立執行個體的方法,constructor-arg為方法傳參。
- 測試類:
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-factory.xml");
Car car1 = (Car) ctx.getBean("car1");
System.out.println(car1);
- 結果:
spring基礎知識 (12):工廠方法配置bean
- 調用靜态工廠方法建立 Bean是将對象建立的過程封裝到靜态方法中. 當用戶端需要對象時, 隻需要簡單地調用靜态方法, 而不同關心建立對象的細節.
- 要聲明通過靜态方法建立的 Bean, 需要在 Bean 的 class 屬性裡指定擁有該工廠的方法的類, 同時在 factory-method 屬性裡指定工廠方法的名稱. 最後, 使用
元素為該方法傳遞方法參數.
<constrctor-arg>
執行個體工廠方法配置bean
将對象的建立過程封裝到另外一個對象執行個體的方法裡. 當用戶端需要請求對象時, 隻需要簡單的調用該執行個體方法而不需要關心對象的建立細節.
- 建立InstanceCarFactory類
package com.spring.factory;
import java.util.HashMap;
import java.util.Map;
public class InstanceCarFactory {
private static Map<String,Car> map = null;
public InstanceCarFactory() {
map = new HashMap<String, Car>();
map.put("Audi", new Car("Audi",));
map.put("Ford", new Car("Ford",));
}
public Car getCar(String brand){
return map.get(brand);
}
}
- 配置bean:
<!-- 配置工廠bean -->
<bean id="carFactory" class="com.spring.factory.InstanceCarFactory"></bean>
<!-- 使用工廠來建立Car的bean執行個體 -->
<bean id="car2" factory-bean="carFactory" factory-method="getCar">
<constructor-arg value="Audi"></constructor-arg>
</bean>
- 測試:
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-factory.xml");
Car car2 = (Car) ctx.getBean("car2");
System.out.println(car2);
本系列參考視訊教程: http://edu.51cto.com/course/1956.html