spring(12) Spring的通过工厂方法配置Bean

来源:互联网 发布:日语识别扫描软件 编辑:程序博客网 时间:2024/04/28 13:45

静态工厂方法示例:

package bean.factory; public class Car {private String name;private int price; public void setPrice(int price) {this.price = price;} public void setName(String name) {this.name = name;} public Car() {} @Overridepublic String toString() {return "Car [name=" + name + ", price=" + price + "]";} public Car(String name, int price) {super();this.name = name;this.price = price;} }

package bean.factory; 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",300000));cars.put("BaoMa", new Car("BaoMa",400000));}public static Car getCar(String name){return cars.get(name);}} 

package bean.factory; import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-factory.xml");Car car = (Car) ctx.getBean("car1");System.out.println(car);car = (Car) ctx.getBean("car2");System.out.println(car);}}

<bean id="car1" class="bean.factory.StaticCarFactory" factory-method="getCar"><constructor-arg value="Audi"></constructor-arg></bean>

实例工厂方法示例:

<bean id="carFactory" class="bean.factory.InstanceCarFactory"></bean><bean id="car2" factory-bean="carFactory" factory-method="getCar"><constructor-arg value="BaoMa"></constructor-arg></bean>

package bean.factory; 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",300000));cars.put("BaoMa", new Car("BaoMa",400000));}public Car getCar(String name){return cars.get(name);}}

0 0
原创粉丝点击