Spring实战教程 | 第六篇:Spring通过工厂方法配置Bean

    xiaoxiao2021-03-26  13

    通过静态工厂方法配置Bean

    1、调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中,当客户端需要对象时,只需要简单地调用静态方法,而不用关心创建对象的细节 2、要声明通过静态方法创建的Bean,需要在Bean的class属性里指定拥有该工厂的方法的类,同时在factory-method属性里指定工厂方法的名称。最后使用< constrctor-arg>元素为该方法传递方法参数 代码示例 1、静态工厂方法

    /* * 静态工厂方法:直接调用某一个类的静态方法就可以返回Bean的实例 */ public class StaticCarFactory { private static Map<String ,Car> cars=new HashMap<String ,Car>(); static{ cars.put("ford",new Car("ford",3400000)); cars.put("audi",new Car("audi",300000)); } //静态工厂方法 public static Car getCar(String name) { return cars.get(name); } }

    配置

    <!-- 通过静态工厂方法来配置bean 注意不是配置静态工厂方法的实例,而是配置bean的实例 --><!-- class属性:指向静态工厂方法的全类名 factory-method:指向静态方法名 constructor-arg:如果工厂方法需要传入参数,则使用constructor-arg来配置参数 --> <bean id="car" class="spring.bean.factory.StaticCarFactory" factory-method="getCar"> <constructor-arg value="audi"></constructor-arg> </bean>

    运行结果


    通过实例工厂方法配置Bean

    实例工厂方法: 将对象的创建过程封装到另外一个对象实例的方法里. 当客户端需要请求对象时, 只需要简单的调用该实例方法而不需要关心对象的创建细节. 要声明通过实例工厂方法创建的 Bean ①在 bean 的 factory-bean 属性里指定拥有该工厂方法的 Bean ②在 factory-method 属性里指定该工厂方法的名称 ③使用 construtor-arg 元素为工厂方法传递方法参数 代码示例 1、实例工厂方法

    /* * 实例工厂方法:实例工厂的方法,即先需要创建工厂本身,再调用工厂的实例方法来返回bean的实例 */ 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("ford",new Car("ford",400000)); } public Car getCar(String brand) { return cars.get(brand); } }

    配置

    <!-- 即先需要配置工厂本身,再引用工厂的实例方法来配置bean的实例 --> <bean id="carFactory" class="spring.bean.factory.InstanceCarFactory"></bean> <bean id="car2" factory-bean="carFactory" factory-method="getCar"> <constructor-arg value="audi"></constructor-arg> </bean>

    运行结果

    转载请注明原文地址: https://ju.6miu.com/read-650267.html

    最新回复(0)