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

原文地址:https://www.cnblogs.com/HigginCui/p/5573537.html