Spring之使用工厂方法配置Bean

public class Car {
    
    private String brand;
    private double price;
    
    
    public Car(String brand, double price) {
        this.brand = brand;
        this.price = price;
    }
    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        this.brand = brand;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    @Override
    public String toString() {
        return "Car [brand=" + brand + ", price=" + price + "]";
    }
}
import java.util.HashMap;
import java.util.Map;

/**
 * 静态工厂方法:直接调用某一个类的静态方法就可以返回bean的实例
 * @author zhang
 *
 */

public class StaticCarFactory {

    private static Map<String,Car> map = new HashMap<String, Car>();
    static{
        map.put("Audi",new Car("Audi",30000));
        map.put("Ford",new Car("Ford",20000));
    }
    
    public static Car getCar(String name){
        return map.get(name);
    }
}
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("ford",new Car("ford",20000));
        cars.put("audi",new Car("audi",30000));
    }
    
    public Car getCar(String name){
        return cars.get(name);
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <!-- 通过静态工厂方法来配置bean实例 -->
    <bean id="car" class="com.auguigu.spring.beans.factory.StaticCarFactory"
        factory-method="getCar">
        <constructor-arg value="Audi"></constructor-arg>
    </bean>
    
    <!-- 配置工厂的实例 -->
    <bean id="carFactory" class="com.auguigu.spring.beans.factory.InstanceCarFactory"></bean>
    <!-- 通过实例工厂方法来配置bean -->
    <bean id="cars" factory-bean="carFactory" factory-method="getCar">
        <constructor-arg value="ford"></constructor-arg>
    </bean>
    
</beans>

之所以描述很少,因为我觉得他们不是很重要,在业务生产中用不到

原文地址:https://www.cnblogs.com/sdnu-zhang/p/8528024.html