Spring - constructor-arg和property的使用示例


一、說明
    constructor-arg:通過構造函數注入。 
    property:通過setter對應的方法注入。

二、property使用實例

1、Model代碼:

public class Person { private String name; private int age; private String className; private String grade; private List<Person> friends = new ArrayList<>(); public List<Person> getFriends() { return friends; } public void setFriends(List<Person> friends) { this.friends = friends; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } public String toString(){ return "Person [name=" + name + ", classname=" + className +", age=" + age+", grade=" + grade+", friends=\n" +friends+ "]"; } }

 2、xml配置:

<bean id="person" class="models.Person">
        <property name="age" value="22"/>  //通過setXXX方法,所以Person對象屬性不用全部設置,classname和grade未設置
        <property name="name" value="liuzg"/>
        <property name="friends">         //通過ref 傳入已經初始化的bean wangxin和lirifeng
            <list>                        //liuzg有兩個朋友 wangxin和lirifeng
                <ref bean="wangxin"/>    //local只能在同一個XML中實現id引入,而bean可以跨XML文件引入,同時bean可以根據name屬性進行引用,使用范圍明顯較廣,更強大。
                <ref bean="lirifeng"/>
            </list>
        </property>
    </bean>
    <bean id="wangxin" class="models.Person">
        <property name="age" value="22"/>
        <property name="name" value="wangxin"/>
    </bean>
    <bean id="lirifeng" class="models.Person">
        <property name="age" value="22"/>
        <property name="name" value="lirifeng"/>
    </bean>

三、constructor-arg使用實例

1、Model代碼:

public class Student { private String name; private int age; private String className; private String grade; private List<Person> friends = new ArrayList<>(); public Student() { } public Student(String name,int age,String className,String grade,List<Person> friends){ this.friends = friends; this.name = name; this.age = age; this.className = className; this.grade = grade; } public String toString(){ return "student [name=" + name + ", classname=" + className +", age=" + age+", grade=" + grade+", friends=\n" +friends+ "]"; } }

2.xml配置

 <bean id="liangyuqi" class="models.Student">
        <constructor-arg index="0" value="liangyuqi"/>   //通過構造函數,需根據函數形參 全部設置
        <constructor-arg name="age" value="18"/>         //可以根據index或者name設置屬性,下標從0開始。boolean的值既可以用0/1填充,也可以用true/false填充。
        <constructor-arg index="2" value="1401"/>
        <constructor-arg index="3" value="95"/>
        <constructor-arg index="4" ref="person"/>
    </bean>

 

四、Test

1.測試代碼

public class MyTest { public void testSpring(){ ApplicationContext context = new ClassPathXmlApplicationContext("test.xml"); //1.讀取spring初始化的配置文件   Object p = context.getBean("liangyuqi"); //2.根據bean獲取Student實現類對象 p  System.out.println(p); } }

2.輸出結果 :      liangyuqi的朋友有liuzg,以及顯示liuzg的friends set wnagxin,lirifeng


免責聲明!

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



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