通过工厂配置bean

通过工厂配置bean

1.静态工厂方法

class属性指向静态工厂类

factory-method:指向创建名称

constructor-arg:用于静态方法传参

Java代码:

package com.spring.factory;
import java.util.HashMap;
import java.util.Map;
public class StaticObjFactory {
    private static Map<String, FactoryCar> carMap = new HashMap<>();
    static {
        carMap.put("BMW", new FactoryCar("BMW", 300000));
        carMap.put("BenCi", new FactoryCar("BenCi", 600000));
    }
    public static FactoryCar carFatory(String name) {
        return carMap.get(name);
    }
    public static FactoryCar carFatory1(String name) {
        return carMap.get(name);
    }
}

xml代码:

<bean id="factoryCar1" class="com.spring.factory.StaticObjFactory" factory-method="carFatory">
    <constructor-arg name="name" value="BenCi"></constructor-arg>
</bean>

<bean id="factoryCar2" class="com.spring.factory.StaticObjFactory" factory-method="carFatory1">
    <constructor-arg name="name" value="BMW"></constructor-arg>
</bean>

2.实例工厂方法

需要先创建工厂对象,再低啊用工厂方法创建实例

factory-bean:指向工厂实例

不需要指定class属性

Java代码:

package com.spring.factory;

import java.util.HashMap;
import java.util.Map;

public class InstanceObjFactory {
    private Map<String, FactoryCar> carMap = new HashMap<>();

    public InstanceObjFactory() {
        carMap.put("Audi", new FactoryCar("Audi", 300000));
        carMap.put("LuHu", new FactoryCar("LuHu", 600000));
    }

    public FactoryCar carFatory(String brandName) {
        return carMap.get(brandName);
    }
}

xml代码:

<bean id="instanceObjFactory" class="com.spring.factory.InstanceObjFactory"></bean>

<bean id="factoryCar3" factory-bean="instanceObjFactory" factory-method="carFatory">
    <constructor-arg name="brandName" value="Audi"></constructor-arg>
</bean>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容