使用自动注入byType的方式对对象属性进行赋值
1. 写类对象
1 package com.bjpowernode.ba05; 2 3 public class Student { 4 private String name; 5 private int age; 6 private School school; 7 8 public void setName(String name) { 9 this.name = name; 10 } 11 12 public void setAge(int age) { 13 this.age = age; 14 } 15 16 public void setSchool(School school) { 17 this.school = school; 18 } 19 20 @Override 21 public String toString() { 22 return "Student{" + 23 "name='" + name + '\'' + 24 ", age=" + age + 25 ", school=" + school + 26 '}'; 27 } 28 }
1 package com.bjpowernode.ba05; 2 3 public class School { 4 private String name; 5 private String address; 6 7 public void setName(String name) { 8 this.name = name; 9 } 10 11 public void setAddress(String address) { 12 this.address = address; 13 } 14 15 @Override 16 public String toString() { 17 return "School{" + 18 "name='" + name + '\'' + 19 ", address='" + address + '\'' + 20 '}'; 21 } 22 }
1 package com.bjpowernode.ba05; 2 3 public class PrimarySchool extends School { 4 }
2. 维护spring容器属性
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 <!--使用自动注入的方式对引用类型的属性进行赋值--> 6 <!-- 7 引用类型的自动注入:spring框架根据某些规则可以给应用类型赋值。使用的规则常用的是byName,byType 8 1. byName(按照名称注入)要求要注入的引用类型属性名称和bean标签的id名称一致,并且属性类型一致 9 2. byType(按类型注入)java类中引用类型的数据类型和spring容器中(配置文件)<bean>de class属性是同源关系的 10 这样的bean能够赋值给引用类型 11 同源就是一类的意思 12 1. java类中引用类型的数据类型和bean的class的值是一样的 13 2. java类中引用类型的数据类型和bean的class的值是父子关系的 14 3. java类中的引用类型的数据类型和bean的class的值是接口和实现类关系的 15 --> 16 <bean id="myStudent" class="com.bjpowernode.ba05.Student" autowire="byType"> 17 <property name="age" value="13"/> 18 <property name="name" value="xiaohui"/> 19 </bean> 20 21 <!-- <bean id="mySchool" class="com.bjpowernode.ba05.School"> 22 <property name="name" value="山东建筑大学"/> 23 <property name="address" value="凤鸣路"/> 24 </bean>--> 25 <bean id="myPrimarySchool" class="com.bjpowernode.ba05.PrimarySchool"> 26 <property name="name" value="ly小学"/> 27 <property name="address" value="ly"/> 28 </bean> 29 </beans>
3. 使用spring创建对象并使用
1 package com.bjpowernode; 2 3 import com.bjpowernode.ba05.Student; 4 import org.junit.Test; 5 import org.springframework.context.ApplicationContext; 6 import org.springframework.context.support.ClassPathXmlApplicationContext; 7 8 public class MyTest05 { 9 @Test 10 public void test05(){ 11 /*使用byType的方式实现对象属性的自动注入*/ 12 String conf = "ba05/applicationContext.xml"; 13 ApplicationContext ac = new ClassPathXmlApplicationContext(conf); 14 Student student = (Student) ac.getBean("myStudent"); 15 System.out.println(student); 16 } 17 }

浙公网安备 33010602011771号