程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> SpringIOC使用擴展,springioc擴展

SpringIOC使用擴展,springioc擴展

編輯:JAVA綜合教程

SpringIOC使用擴展,springioc擴展


   

在上篇博客中,我們使用Spring通過setter訪問器實現了對屬性的賦值,這種做法被稱為設值注入。除此之外Spring還提供了通過構造方法賦值的能力,成為構造注入。下面我們通過一個小demo來了解如何通過構造方法來注入值(因一個類中可能包含其他自定義類型的對象,所以我們采用Student類中包含Car類的實例來演示如何通過構造來給Student類屬性注入值)

Student類:

public class Student {
    private String name;//學生姓名
    private Integer age; //學生年齡
    private Car car;//學生的汽車
    @Override
    //重寫toString()方法方便進行測試
    public String toString() {
        return "Student [name=" + name + ", age=" + age + ", car=" + car + "]";
    }
    //構造函數
    public Student(String name, Integer age, Car car) {
        System.out.println("我是帶參構造");
        this.name = name;
        this.age = age;
        this.car = car;
    }
    
    public Student() {
        System.out.println("我是無參構造");
    }
    //屬性訪問器
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Car getCar() {
        return car;
    }
    public void setCar(Car car) {
        this.car = car;
    }
    
}

Car類:

public class Car {
    //汽車顏色
    private String color;
    //屬性訪問器
    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
    //重寫toString()方法方便測試
    @Override
    public String toString() {
        return "Car [color=" + color + "]";
    }
     
    
    
}

applicationContext.xml配置:

<bean id="car" class="cn.wz.entity.Car">
         <property name="color" value="白色"/>
    </bean>
                    
    <bean id="stu" class="cn.wz.entity.Student">
    <!--通過constructor-arg元素向構造方法傳入參數-->
            <constructor-arg index="0" value="王哲"/>
    <constructor-arg index="1" value="18"/>
    <constructor-arg index="2" ref="car"/>                    
    </bean>

測試代碼:

public class Test {
    public static void main(String[] args) {
        
        hasArgumentConstructor();
    }
    public static void hasArgumentConstructor(){
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = context.getBean("stu",Student.class);
        System.out.println(student);
        
    }
}

最終運行結果:

<bean id="car" class="cn.wz.entity.Car"> <property name="color" value="白色"/> </bean> <bean id="stu" class="cn.wz.entity.Student" p:name="王哲" p:age="18" p:car-ref="car" />

  

其測試用例運行效果是一樣的,但需要注意的是在使用這種方式給屬性注入值時一定要先導入P命名空間如圖所示:<!-- List集合 --> <bean id="list" class="cn.wz.entity.Student"> <property name="list"> <list> <value>王哲</value> <value>張一銘</value> </list> </property> </bean> <!-- Set集合 --> <bean id="set" class="cn.wz.entity.Student"> <property name="set"> <set> <value>王哲</value> <value>張一銘</value> </set> </property> </bean> <!-- map集合 --> <bean id="map" class="cn.wz.entity.Student"> <property name="map"> <map> <entry key="wz"><value>王哲</value></entry> <entry key="zym"> <value>張一銘</value></entry> </map> </property> </bean> <!-- 數組 --> <bean id="array" class="cn.wz.entity.Student"> <property name="array"> <list> <value>王哲</value> <value>張一銘</value> </list> </property> </bean>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved