Spring------基于XML的DI(三)基于引用类型的自动注入(ByName、ByType)

基于引用类型的自动注入

引用类型的自动注入(只对引用类型有效):由框架实现对引用类型的赋值,常用的赋值规则 :

1 ) byName (按名称自动注入) : java类中引用类型的属性名 和 spring容器(spring配置文件)中 bean的id 一样,且数据类型一样,这样的bean能够赋值给引用类型。
2)byType (按类型自动注入) : java类中引用类型的数据类型 和 spring容器(spring配置文件)中 bean 的class属性值同源关系 的,这样的bean能够赋值给引用类型。
注:同源关系是指:

  1. 引用类型的数据类型和< bean >的class属性值是一样的。
  2. 引用类型的数据类型和< bean >的class属性值是父子类关系的。
  3. 引用类型的数据类型和< bean >的class属性值是接口和实现类关系

指定byName自动注入

< bean id=“xx” class=“yyy” autowire=“byName” />

public class Student {

	private String name;
	private int age;
	
	//引用类型   对应这个mySchool 就会找id为mySchool的bean来完成对引用类型的属性注入
	private School mySchool;

	//setter  toString
	
}
public class School {
	
	private String name;
	private String address;

	//setter  toString

}
<bean id="myStudent" class="com.test.Student" autowire="byName">
    	<!-- 简单类型的属性赋值 -->
    	<property name="name" value="王五" /> 
    	<property name="age" value="21" /> 
    	<!-- 引用类型设值注入 -->
    	<!-- <property name="mySchool" ref="myXueXiao" />  -->
</bean>

<bean id="mySchool" class="com.test.School">
    	<property name="name" value="中山大学" />
    	<property name="address" value="广州" />
</bean>

指定byType自动注入

< bean id=“xx” class=“yyy” autowire=“byType” />
注:byType中符合条件的对象只能有一个,多余一个是报错的

public class Student {

	private String name;
	private int age;
	
	//引用类型 
	private School mySchool;

	//setter  toString
	
}
public class School {
	
	private String name;
	private String address;

	//setter  toString

}
<!-- 指定了byType就会找bean中class属性是引用类型class同源的来完成属性注入 -->
<bean id="myStudent" class="com.test.Student" autowire="byType" >
    	<!-- 简单类型的属性赋值 -->
    	<property name="name" value="王五" /> 
    	<property name="age" value="20" /> 
    	<!-- 引用类型设值注入 -->
    	<!-- <property name="mySchool" ref="myXueXiao" />  -->
    </bean>
    
   
     <!-- 同源关系一 -->
     <!-- 只能有一个School类对象 -->
     <bean id="myXueXiao" class="com.test.School">
    	<property name="name" value="中山大学" />
    	<property name="address" value="广州" />
     </bean>

结束语

追踪着鹿的猎人是看不见山的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值