04_属性参考
【简述】
如果在bean定义文件中已经有一个定义好的bean实例,则可以直接让某个属性来参考至这个实例,以实际的例子来做示范。
【工程截图】
【HelloWorld.java】
package com.HigginCui; import java.util.Date; public class HelloWorld { private String words; private Date date; //建议加上无参构造函数 public HelloWorld(){} public HelloWorld(String words,Date date){ this.words=words; this.date=date; } public String getWords() { return words; } public void setWords(String words) { this.words = words; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String toString() { return "HelloWorld [words=" + words + ", date=" + date + "]"; } }
【applicationContext.xml】
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" 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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <!-- 先定义一个dateBean,之后定义的HelloWorld可以直接参考至dateBean实例 只要在定义文件中完成定义,接下来Spring就会帮我们完成这个依赖关系 --> <bean id="dateBean" class="java.util.Date"></bean> <bean id="helloWorld" class="com.HigginCui.HelloWorld"> <property name="words"> <value>Hello World!!</value> </property> <property name="date"> <ref bean="dateBean"/> <!-- 如果bean属性只被参考一次,之后在定义文件中不在被其它bean属性所参考,那么也可以 直接在定义属性是直接使用<bean>标签,改成这样:<bean class="java.util.Date"> --> </property> </bean> </beans>
【testHelloWorld.java】
public class testHelloWorld {
@Test
public void testHelloWorld(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld=(HelloWorld) context.getBean("helloWorld");
System.out.println(helloWorld.toString());
}
}
【运行结果】
HelloWorld [words=Hello World!!, date=Fri Jun 10 12:34:06 CST 2016]
【小结】
要参考定义文件中已经定义的bean实例,要使用<ref>标签,并使用"name"属性来指定定义文件中药参考的bean实例名。
Spring的IoC容器会自动生成Date实例,并通过setDate()方法将Date实例设定给helloWorld