`
morgan117
  • 浏览: 4168 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring <idref>与<ref>的区别

阅读更多
Spring中,<idref>和<ref>还是比较容易混淆的。。 他们的本质区别是<idref>对应的是id的值,对应该值的property一般来说是String类型, 而<idref>对应的是bean的值, 对应该值的property是bean的类型。 这样说还是比较模糊的,看下面的例子。

package Impl;

public class Teacher {
	
	public Teacher(){
		
	}
	
	public Teacher(String name,Student student){
		
	}

}
 
package Impl;

public class Student {
	private Teacher teacher;  //Teacher类型
//	private IPhone phone;
	private String teacherId;  //String类型
	
	public Student(){
		
	}
	
	public Student(Teacher teacher){
		this.teacher = teacher;
	}

	public Teacher getTeacher() {
		return teacher;
	}

	public void setTeacher(Teacher teacher) {
		this.teacher = teacher;
	}

	public String getTeacherId() {
		return teacherId;
	}

	public void setTeacherId(String teacherId) {
		this.teacherId = teacherId;
	}
	
}


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

<bean id="student" class="Impl.Student" >
<property name="teacher">
	<ref bean="teacher"/>
</property>
<property name="teacherId">
	<idref bean="teacher"/>
</property>
</bean>



<bean id="teacher" class="Impl.Teacher">
	<constructor-arg index="0" type="java.lang.String">
		<value>Morgan</value>
	</constructor-arg>
	
	<constructor-arg index="1" ref="student">
	</constructor-arg>
</bean>

</beans>


package test;

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

import Impl.Student;

public class TestConstructorBeans {
	
	public static void main(String args[]){
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
//		context.getBean("teacher");
		
		ApplicationContext context2 = new ClassPathXmlApplicationContext(new String[]{"constructorBeans.xml"},context);
		//context.getBean("phone2");
	    Student s = (Student)context2.getBean("student");
	    System.out.println(s.getTeacherId());
	}

}



需要指出的是,<idref bean="teacher"/> 可以用<value>teacher</value>替代,但是Spring是不会检出value是否存在的。。而是用idref, sping在加载的时候会检出idref的值是否存在。 因为拿到另一个bean的id, 基本上都是想在运行时通过getBean得到bean的实例。
分享到:
评论

相关推荐

    XML实用大全

    292&lt;br&gt;10.5.6 IDREF属性类型... 292&lt;br&gt;10.5.7 ENTITY属性类型... 293&lt;br&gt;10.5.8 ENTITIES 属性类型... 294&lt;br&gt;10.5.9 NOTATION属性类型... 294&lt;br&gt;10.6 预定义属性... 296&lt;br&gt;10.6.1 xml:space. 296&lt;br&gt;10.6.2 ...

    spring.net中文手册在线版

    Spring.NET以Java版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。 第一章 序言 第二章 简介 2.1.概述 2.2.背景 2.3.模块 2.4.许可证信息 2.5.支持 第三章 背景 3.1.控制反转 第...

    《XML》实验任务书 XML Schema 答案 解答

    与ID/IDREF相比,key/keyref有哪些优点,在使用上有何不同? 假设SpyBase1.xml中的alias、mission、spy来自不同的命名空间中,如何在Schema中对其进行限定,请在XMLSPY中完成相应的xsd文档?修改SpyBase1.xml,并...

    采用降阶龙伯格观测器实现PMSM的无传感器FOC.zip

    转子中的磁体产生转子磁链Λm,这一点与交流感应电机(AC Induction Motor, ACIM)不同,交流感应电机需要恒定参考值idref来磁化电流,从而产生转子磁链。本章的后面部分将介绍内置式永磁(Interior Permanent ...

    基于链接关系的微格式 使用rel属性

    我热爱语义、结构、简单和他的潜力。我决定我必须要跟世界一起分享我对他的热爱(或者至少分享给我的四个读者),要分享我是如何在博客上使用不同的微格式的。

    nova:Lodel模型与OpenEdition Journals兼容

    Nova模型与兼容,并使用。 除了OpenEdition Journals编辑模型通常支持的字段之外,Nova模型还允许(可选)显示文章的以下数据: [#CHAPO]字段 链接到以下数据库中的作者文件:IdRef,BNF,Orcid,HAL,Isni 作者...

    dsp pid算法测序

    float32 IdRef = 0; // Id参考值(标幺值) float32 VqTesting = 0.18; // Vq测试值(标幺值),(0.25) float32 VdTesting = 0; // Vd测试值(标幺值) float32 angle; Uint16 BackTicker = 0; Uint16 ...

    HTML开发王

    3.5.3 idref和idrefs使用的数据类型 3.5.4 number数据类型 3.5.5 文本字符串 3.5.6 使用uri 3.5.7 使用颜色 3.5.8 使用长度 3.5.9 内容类型(mime类型) 3.5.10 语言代码 3.5.11 字符编码 3.5.12 单字符 3.5.13 日期和...

    xml实用大全和轻松学习手册和无废话xml

    10.5.6 IDREF属性类型 292 10.5.7 ENTITY属性类型 293 10.5.8 ENTITIES 属性类型 294 10.5.9 NOTATION属性类型 294 10.6 预定义属性 296 10.6.1 xml:space 296 10.6.2 xml:lang 297 10.7 基于属性的棒球统计数据的...

    XMl实用大全(资料全易学习)

    10.5.6 IDREF属性类型 292 10.5.7 ENTITY属性类型 293 10.5.8 ENTITIES 属性类型 294 10.5.9 NOTATION属性类型 294 10.6 预定义属性 296 10.6.1 xml:space 296 10.6.2 xml:lang 297 10.7 基于属性的棒球统计数据的...

    XML实用大全----xml详细参考书

    10.5.6 IDREF属性类型... 292 10.5.7 ENTITY属性类型... 293 10.5.8 ENTITIES 属性类型... 294 10.5.9 NOTATION属性类型... 294 10.6 预定义属性... 296 10.6.1 xml:space. 296 10.6.2 xml:lang. 297 10.7 ...

    XML编程综合资料库

    10.5.6 IDREF属性类型... 292 10.5.7 ENTITY属性类型... 293 10.5.8 ENTITIES 属性类型... 294 10.5.9 NOTATION属性类型... 294 10.6 预定义属性... 296 10.6.1 xml:space. 296 10.6.2 xml:lang. 297 10.7 ...

    XML实用大全(web开发必备手册)

    10.5.6 IDREF属性类型... 292 10.5.7 ENTITY属性类型... 293 10.5.8 ENTITIES 属性类型... 294 10.5.9 NOTATION属性类型... 294 10.6 预定义属性... 296 10.6.1 xml:space. 296 10.6.2 xml:lang. 297 10.7 ...

Global site tag (gtag.js) - Google Analytics