依賴注入的3種方式


 

屬性注入:

Car.class

public class Car {
    public String brand;
    private String corp;    
    private double price;
    private int maxSpeed;

public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public int getMaxSpeed() { return maxSpeed; } public void setMaxSpeed(int maxSpeed) { this.maxSpeed = maxSpeed; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String toString(){ return "brand:"+brand+"/maxSpeed:"+maxSpeed+"/price:"+price; } }

 

配置文件

<!-- 屬性注入 -->
    <!--bean id="car" class="com.smart.ditype.Car">
        <property name="brand" value="紅旗&amp;CA72"/>
        <property name="maxSpeed" value="200"/>
        <property name="price" value="20000.00"/>
    </bean>

測試:

public class DiTypeTest {
    public ApplicationContext factory = null;

    private static String[] CONFIG_FILES = { "com/smart/ditype/beans.xml" };

    @BeforeClass
    public void setUp() throws Exception {
        factory = new ClassPathXmlApplicationContext(CONFIG_FILES);
    }

    @Test
    public void testCar(){
        Car car = (Car)factory.getBean("car");
        assertNotNull(car);
        System.out.println(car);
    }
}

 

構造函數注入:

Car.class

public class Car {
    public String brand;
    private String corp;    
    private double price;
    private int maxSpeed;

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

    public Car(String brand, String corp, double price) {
        this.brand = brand;
        this.corp = corp;
        this.price = price;
    }
    public Car(String brand, String corp, int maxSpeed) {
        this.brand = brand;
        this.corp = corp;
        this.maxSpeed = maxSpeed;
    }
}

 

配置文件:

<!--構造函數注入:type -->
    <bean id="car1" class="com.smart.ditype.Car">
        <constructor-arg type="java.lang.String">
            <value>紅旗CCCA72</value>
        </constructor-arg>
        <constructor-arg type="double">
            <value>10000</value>
        </constructor-arg>
    </bean>

測試:

@Test
    public void testCar1(){
        Car car1 = (Car)factory.getBean("car1");
        assertNotNull(car1);
        System.out.println(car1);
    }    

 

工廠注入:

CarFactory.class

public class CarFactory {
   public Car createHongQiCar(){
       Car car = new Car();
       car.setBrand("紅旗CA72");
       return car;
   }
   
   public static Car createCar(){
       Car car = new Car();
       return car;
   }
}

配置文件:

<!-- 工廠方法-->
    <bean id="carFactory" class="com.smart.ditype.CarFactory" />
<bean id="car5" factory-bean="carFactory" factory-method="createHongQiCar">
</bean>
<bean id="car6" class="com.smart.ditype.CarFactory"
factory-method="createCar"></bean>

測試:

@Test
    public void testCar5(){
        Car car5 = (Car)factory.getBean("car5");
        assertNotNull(car5);
        System.out.println("car5:"+car5);
    }

    @Test
    public void testCar6(){
        Car car6 = (Car)factory.getBean("car6");
        assertNotNull(car6);
        System.out.println("car6:"+car6);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM