Spring04——工厂方式配置bean

Bean的配置形式:基于XML文件的方式;基于注解的方式

Bean的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法&实例化工厂的方法)、factoryBean

下文主要介绍静态工厂方法和factoryBean的方法:

建立实体:

就两个属性以及对应的get、set方法 

package com.spring.entity01;

/**
 * @Author: wj
 * @Date: 2018/11/19 14:29
 * @Version 1.0
 */
public class Car {
    public String carNam;

    public String price;


    public Car(String carNam, String price) {
        this.carNam = carNam;
        this.price = price;
    }

    public String getCarNam() {
        return carNam;
    }

    public void setCarNam(String carNam) {
        this.carNam = carNam;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Car{" +
                "carNam='" + carNam + '\'' +
                ", price='" + price + '\'' +
                '}';
    }
}

一.静待工厂方法:

1.建立工厂类:

通过getCar 方法根据Map的key值返回相应的实体类

package com.spring.beanFactory;

import com.spring.entity01.Car;

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

/**
 * @Author: wj
 * @Date: 2018/11/19 14:31
 * @Version 1.0
 */
public class StaticCarFactory {
    private static Map<String,Car> carMap = new HashMap<String, Car>();

    static {
        carMap.put("audi",new Car("audi","20000"));
        carMap.put("ford",new Car("ford","40000"));
    }

    public static Car getCar(String name){
        return carMap.get(name);
    }
}

2.建立XML文件

3.main方法:

4.输出:

该方法主要通过xml传入的参数去找到工厂方法里静态Map中对应的实体类实现的。

二.factoryBean 方法

1.建立CarFacoryBean 类实现FactoryBean接口

package com.spring.beanFactory;

import com.spring.entity01.Car;
import org.springframework.beans.factory.FactoryBean;

/**
 * @Author: wj
 * @Date: 2018/11/19 15:29
 * @Version 1.0
 */
public class CarFactoryBean implements FactoryBean<Car> {
    private  String carNam;


    public void setCarNam(String carNam) {
        this.carNam = carNam;
    }

    public Car getObject() throws Exception {
        return new Car(carNam,"520000");
    }

    public Class<?> getObjectType() {
        return Car.class;
    }

    public boolean isSingleton() {
        return true;
    }
}

2.建立xml文件

 <!--
     class:CarFactoryBean的全路径
     该方法是通过getObject方法返回实体Bean的
     -->
    <bean id="car2" class="com.spring.beanFactory.CarFactoryBean" >
        <property name="carNam" value="BMW"></property>

    </bean>

3.输出

总结:工厂方法在多框架继承的时候比较常见,在继承Struts2是会用得到

猜你喜欢

转载自blog.csdn.net/weixin_38520617/article/details/84251019
今日推荐