byName 的注入方式的配置文件
<?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">
<!-- 引用类型的自动注入:spring宽肩大格局某些规则可以引用类型赋值。不用你在给引用类型赋值了
使用规则常用的的时byName ,byType
1、byName(按名称注入):Java勒种引用的属性名和spring容器中(配置文件)<bean>的ID名称一样,
且数据类型是一致的,这样的容器中的bean,spring能够赋值给引用类型。
语法:
<bean id="xx" class="yyy" autowir="byName">
简单的类型属性赋值
</bean>
2.byType (按类型注入) Java类中引用类型的数据类型和spring容器中(配置文件)<bean> 的class属性
是同源冠希的,祝贺样的bean能够赋值给引用类型
同源就是一类的意思是
1.Java类中引用类型的数据类型和备案的class的值是一样的。
2.Java类中的引用类型的数据类型和备案的class的值父子类型冠希的
3.Java类中的引用类型的数据类型和备案的class的值接口的实现类的冠希
<bean id="xx" class="yyy" autowir="byType">
简单的类型属性赋值
</bean>
注意:在byType中,在xml配置文件中声明bean只能有一个符合条件的,多余一个是错误的
-->
<!-- byName-->
<bean id="myStudent" class="cn.qiang.service.ba04.Student" autowire="byName">
<property name="name" value="李四"/>
<property name="age" value="20"/>
</bean>
<bean id="school" class="cn.qiang.service.ba04.School">
<property name="name" value="南京大学"/>
<property name="address" value="南京"/>
</bean>
</beans>
byType的注入的配置文件
<?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="myStudent" class="cn.qiang.service.ba04.Student" autowire="byType">
<property name="name" value="李四"/>
<property name="age" value="20"/>
</bean>
<!-- <bean id="school" class="cn.qiang.service.ba04.School">-->
<!-- <property name="name" value="南京大学"/>-->
<!-- <property name="address" value="南京"/>-->
<!-- </bean>-->
<!-- 声明school的子类-->
<bean id="primarySchool" class="cn.qiang.service.ba04.PrimarySchool">
<property name="name" value="南京大学附属中学"/>
<property name="address" value="下关区萨大路"/>
</bean>
</beans>
注入所用到的类
student和school两个类
package cn.qiang.service.ba05;
public class School {
private String name;
private String address;
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "School{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
}
package cn.qiang.service.ba05;
import cn.qiang.service.ba04.School;
public class Student {
private String name;
private int age;
//声明一个引用类型
private cn.qiang.service.ba04.School school;
public Student() {
}
public void setSchool(School school) {
System.out.println("setSchool:"+school);
this.school = school;
}
public void setName(String name) {
// System.out.println("setName:"+name);
this.name = name;
}
public void setAge(int age) {
// System.out.println("setAge:"+age);
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", school=" + school +
'}';
}
public void setEmail(String email){
System.out.println("setEmail:"+email);
}
}
测试类
package com.qiang;
import cn.qiang.service.ba04.Student;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest04 {
@Test
public void test01(){
String config = "ba04/applicationContext.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
Student student = (Student) ac.getBean("myStudent");
System.out.println("Student:"+student);
}
@Test
public void test02(){
String config = "ba04/applicationContext1.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
Student student = (Student) ac.getBean("myStudent");
System.out.println("Student:"+student);
}
}