使用自动注入byName的方式对类的对象属性赋值

1. 定义类:

 1 package com.bjpowernode.ba04;
 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.ba04;
 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 }

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.ba04.Student" autowire="byName">
17         <property name="age" value="13"/>
18         <property name="name" value="xiaohui"/>
19     </bean>
20 
21     <bean id="school" class="com.bjpowernode.ba04.School">
22         <property name="name" value="山东建筑大学"/>
23         <property name="address" value="凤鸣路"/>
24     </bean>
25 </beans>

3. 使用spring容器创建对象并使用对象

 1 package com.bjpowernode;
 2 
 3 import com.bjpowernode.ba04.Student;
 4 import org.junit.Test;
 5 import org.springframework.context.ApplicationContext;
 6 import org.springframework.context.support.ClassPathXmlApplicationContext;
 7 
 8 public class MyTest04 {
 9     @Test
10     public void test04(){
11         /*使用byName的方式实现对象属性的自动注入*/
12         String conf = "ba04/applicationContext.xml";
13         ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
14         Student student = (Student) ac.getBean("myStudent");
15         System.out.println(student);
16     }
17 }

 

posted @ 2021-02-28 15:55  渐行、渐远  阅读(160)  评论(0)    收藏  举报