快速上手Spring--7. ref的用法
2007-06-13 11:20
489 查看
这篇文章来谈谈《Spring Framework 开发参考手册》的3.3.2小节中的ref的用法。
ref元素是用在property中,来设置需要引用的容器管理的其它Bean。
它的用法:<ref bean|local|parent="someBean">,这里主要分析一下这三个参数的作用。
这次先看实例,再进行讲解。
· 先建立一个包:javamxj.spring.basic.ref ,然后把以下5个文件放在这个包下。
beans.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloBean" class="javamxj.spring.basic.ref.HelloBean">
<property name="hello" value="Hello! Child Bean." />
</bean>
<bean id="dateBean" name="#date" class="java.util.Date"/>
<bean id="hd1" class="javamxj.spring.basic.ref.HelloDate">
<property name="hb">
<ref bean="helloBeanParent"/>
</property>
<property name="date">
<ref bean="#date"/>
<!--<ref bean="dateBean"/>-->
</property>
</bean>
<bean id="hd2" class="javamxj.spring.basic.ref.HelloDate">
<property name="hb">
<ref local="helloBean"/>
</property>
<property name="date">
<ref local="dateBean"/>
</property>
</bean>
<bean id="hd3" class="javamxj.spring.basic.ref.HelloDate">
<property name="hb">
<ref parent="helloBean"/>
</property>
<property name="date">
<bean class="java.util.Date"/>
</property>
</bean>
</beans>
·运行Main.java,输出结果如下:
Hello! Parent Bean. 2005-8-10 22:25:56
Hello! Child Bean. 2005-8-10 22:25:56
Hello! Javamxj. 2005-8-10 22:25:56
OK!这里主要分析beans.xml、Main.java这两个文件。对于Main.java要注意的是如何加载“parent”的,重点看看beans.xml中ref元素的用法。
首先定义两个bean:helloBean、dateBean,分别指向HelloBean类和Date类。然后定义了hd1、hd2、hd3等三个bean,都指向HelloDate类。
·hd1:
property标签中的“helloBeanParent”并不存在于beans.xml中,而是在parent.xml中,使用<ref bean="someBean">可以从其它bean配置文件中寻找需要加载的目标bean。bean属性的值可以同目标bean的id属性相同,也可以同它的name属性中任意的一个值相同。
·hd2:
property标签中的“helloBean”如果不存在于beans.xml中,则XML解析器会提示错误。<ref local="someBean">只能这个bean配置文件中寻找需要加载的目标bean,而且local属性值必须同目标bean的id属性相同。
·hd3:
property标签中的“helloBean”同时存在于beans.xml和parent.xml中,使用<ref bean="someBean">则会优先从beans.xml中寻找需要加载的目标bean,如果需要从parent.xml中加载目标bean,则需使用<ref parent="someBean">。在设置date时,使用的是内联bean,这时可以不要任何id或name定义。
好了,就说这么多了。
这篇文章源代码下载(不包含库文件):http://free.ys168.com/?javamxj Spring目录下面的SpringBasic.zip。
ref元素是用在property中,来设置需要引用的容器管理的其它Bean。
它的用法:<ref bean|local|parent="someBean">,这里主要分析一下这三个参数的作用。
这次先看实例,再进行讲解。
· 先建立一个包:javamxj.spring.basic.ref ,然后把以下5个文件放在这个包下。
HelloBean.java |
package javamxj.spring.basic.ref; public class HelloBean { private String hello; public String getHello() { return hello; } public void setHello(String hello) { this.hello = hello; } } |
HelloDate.java |
package javamxj.spring.basic.ref; import java.util.Date; public class HelloDate { private Date date; private HelloBean hb; public void setDate(Date date) { this.date = date; } public void setHb(HelloBean hb) { this.hb = hb; } public void sayHello() { System.out.println(hb.getHello() + " " + date.toLocaleString()); } } |
beans.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloBean" class="javamxj.spring.basic.ref.HelloBean">
<property name="hello" value="Hello! Child Bean." />
</bean>
<bean id="dateBean" name="#date" class="java.util.Date"/>
<bean id="hd1" class="javamxj.spring.basic.ref.HelloDate">
<property name="hb">
<ref bean="helloBeanParent"/>
</property>
<property name="date">
<ref bean="#date"/>
<!--<ref bean="dateBean"/>-->
</property>
</bean>
<bean id="hd2" class="javamxj.spring.basic.ref.HelloDate">
<property name="hb">
<ref local="helloBean"/>
</property>
<property name="date">
<ref local="dateBean"/>
</property>
</bean>
<bean id="hd3" class="javamxj.spring.basic.ref.HelloDate">
<property name="hb">
<ref parent="helloBean"/>
</property>
<property name="date">
<bean class="java.util.Date"/>
</property>
</bean>
</beans>
parent.xml |
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="helloBean" class="javamxj.spring.basic.ref.HelloBean"> <property name="hello" value="Hello! Javamxj." /> </bean> <bean id="helloBeanParent" class="javamxj.spring.basic.ref.HelloBean"> <property name="hello" value="Hello! Parent Bean." /> </bean> </beans> |
Main.java |
package javamxj.spring.basic.ref; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class Main { public static void main(String[] args) { BeanFactory parent = new XmlBeanFactory(new ClassPathResource( "javamxj/spring/basic/ref/parent.xml")); BeanFactory child = new XmlBeanFactory(new ClassPathResource( "javamxj/spring/basic/ref/beans.xml"), parent); HelloDate hd1 = (HelloDate) child.getBean("hd1"); HelloDate hd2 = (HelloDate) child.getBean("hd2"); HelloDate hd3 = (HelloDate) child.getBean("hd3"); hd1.sayHello(); hd2.sayHello(); hd3.sayHello(); } } |
·运行Main.java,输出结果如下:
Hello! Parent Bean. 2005-8-10 22:25:56
Hello! Child Bean. 2005-8-10 22:25:56
Hello! Javamxj. 2005-8-10 22:25:56
OK!这里主要分析beans.xml、Main.java这两个文件。对于Main.java要注意的是如何加载“parent”的,重点看看beans.xml中ref元素的用法。
首先定义两个bean:helloBean、dateBean,分别指向HelloBean类和Date类。然后定义了hd1、hd2、hd3等三个bean,都指向HelloDate类。
·hd1:
property标签中的“helloBeanParent”并不存在于beans.xml中,而是在parent.xml中,使用<ref bean="someBean">可以从其它bean配置文件中寻找需要加载的目标bean。bean属性的值可以同目标bean的id属性相同,也可以同它的name属性中任意的一个值相同。
·hd2:
property标签中的“helloBean”如果不存在于beans.xml中,则XML解析器会提示错误。<ref local="someBean">只能这个bean配置文件中寻找需要加载的目标bean,而且local属性值必须同目标bean的id属性相同。
·hd3:
property标签中的“helloBean”同时存在于beans.xml和parent.xml中,使用<ref bean="someBean">则会优先从beans.xml中寻找需要加载的目标bean,如果需要从parent.xml中加载目标bean,则需使用<ref parent="someBean">。在设置date时,使用的是内联bean,这时可以不要任何id或name定义。
好了,就说这么多了。
这篇文章源代码下载(不包含库文件):http://free.ys168.com/?javamxj Spring目录下面的SpringBasic.zip。
相关文章推荐
- 快速上手Spring--7. ref的用法
- 快速上手Spring--7. ref的用法
- 快速上手Spring--7. ref的用法
- 快速上手Spring--7. ref的用法
- Scala开发者的Spring-Boot快速上手指南 02:Scala惯用法
- Spring Cloud快速上手
- 快速上手Spring--1.收集的一些资料
- 快速上手Spring--4.安装和使用IDE
- 快速上手Spring--4.安装和使用SpringIDE
- 快速上手Spring--2.HelloWorld(1)
- 快速上手MQ之activeMQ(2)--spring整合
- 响应式Spring的道法术器(Spring WebFlux 快速上手 + 全面介绍)
- 快速上手Spring--5.Bean的标志符(id与name)
- 快速上手Spring--2.HelloWorld(1)
- 快速上手Spring--9. Lookup方法注入
- 快速上手Spring--10. 任意方法的替换
- [转]Spring Boot 揭秘与实战(一) 快速上手
- 快速上手Spring--5.Bean的标志符(id与name)
- 快速上手Spring--2.HelloWorld(2)
- 快速上手Spring--8. 集合对象注入