1. 程式人生 > >Spring04——工廠方式配置bean

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是會用得到