spring-DI注入(1设值注入,2构造注入,3集合注入)

来源:互联网 发布:菲律宾网络娱乐牌照 编辑:程序博客网 时间:2024/06/07 23:10

1.设置注入

1.1定义学生类Student

package com.abc.di01;

public class Student {
private String name;
private int age;
private School school;


public Student() {
super();
// TODO Auto-generated constructor stub
}


public Student(String name, int age, School school) {
super();
this.name = name;
this.age = age;
this.school = school;
}


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 School getSchool() {
return school;
}


public void setSchool(School school) {
this.school = school;
}


@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", school=" + school + "]";
}


}

package com.abc.di01;

1.2学校类school
public class School {
    private String sname;
    private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;

}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
@Override
public String toString() {
return "School [sname=" + sname + ", address=" + address + "]";
}
}

application.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<bean id="myschool" class="com.abc.di01.School">
<property name="sname" value="aynu" />                      ps:属性名name是 setXxx()或者getXxx()方法名xxx。
<property name="address" value="弦歌大道" />
</bean>


<bean id="student" class="com.abc.di01.Student"> <property name="name" 
value="zs"/> <property name="age" value="11"/> <property name="school" ref="myschool"/>     ps:这里school类相当于student的域对象,不能用value要用ref引用出来school类的id ,myschool
</bean> 
package com.abc.test;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


import com.abc.di01.Some;
import com.abc.di01.Student;

1.3定义测试类
package com.abc.test;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


import com.abc.di01.Student;
public class MyTest {
@Test
public void test() {
// ClassPathXmlApplicationContext("applicationContest.xml")类路径下
          String conf = "applicationContest.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
Student student = (Student) ac.getBean("student");
System.out.println(student);


}

}

2.构造器注入    前面不变


<bean id="student" class="com.abc.di01.Student">
<constructor-arg name="name" value="myschool" />
<constructor-arg name="age" value="22" />
<constructor-arg name="school" ref="myschool" />


</bean>
</beans>

3.集合注入

3.1定义Some类 

package com.abc.di01;


import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;


public class Some {
 private String[]names ;
 private List<String> myList;
 private List<School> schools;
 private Set<String> mySet;
 private Map<String, Object> myMap;
                                                                                                                                                                                                                                                                                                                    
public void setNames(String[] names) {
this.names = names;
}
public void setMyList(List<String> myList) {
this.myList = myList;
}
public void setSchools(List<School> schools) {
this.schools = schools;
}
public void setMySet(Set<String> mySet) {
this.mySet = mySet;
}
public void setMyMap(Map<String, Object> myMap) {
this.myMap = myMap;
}
@Override
public String toString() {
return "haha [你的名字=" + Arrays.toString(names) + ", myList=" + myList + ", schools=" + schools + ", mySet=" + mySet
+ ", myMap=" + myMap + "]";
}


}

3.2school类不变

3.3 修改xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    <bean id="myschool1" class="com.abc.di01.School">
<property name="sname" value="aynu"/>
<property name="address" value="弦歌大道"/>
    </bean>
    <bean id="myschool2" class="com.abc.di01.School">
<property name="sname" value="aynu"/>
<property name="address" value="弦歌大道"/>          ps :格式大多数为<property name= ------ value= -,->

                                                                                                               特殊:    当用到引用型属性如ref bean=school   value= -,->或者

                                                                                                                  map双列集合key ,value 用对应语法(红色标记)


    </bean>

<bean id="some" class="com.abc.di01.Some">
<property name="names" value="zs,ls"/>
<property name="myList" value="ay,bj"/>

   <property name="schools">
     <list>
     <ref bean ="myschool1"/>
     <ref bean ="myschool2"/>
     </list>
      
   </property>

    
    
<property name="mySet" value="qq,email"/>
<property name="myMap">
       <map>
        <entry key="1" value="弦歌大道"/>
        <entry key="2" value="beiking"/>
       </map>
</property>


</bean>
</beans>


3.4定义测试类

package com.abc.test;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


import com.abc.di01.Some;
import com.abc.di01.Student;


public class MyTest {
@Test
public void test() {
// ClassPathXmlApplicationContext("applicationContest.xml")类路径下
          String conf = "applicationContest.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
Some some = (Some) ac.getBean("some");
System.out.println(some);


}




原创粉丝点击