在spring中,用ref的属性指定依赖。有三种模式:local、Bean 和 parent A:用local属性指定: 如果一个Bean与被参考引用的Bean在一个XML文件中而且被参考引用的Bean是用id来命名的,那么就可以使用ref的local属性。这样会让XML解析器更早的在XML文档解析时,验证Bean的id。local属性的值必须与被参考引用的Bean的id 属性一致。如果在同一个XML文件中没有匹配的元素,XML解析器将会产生一个错误。 用XML来配置文档的一个明显缺点是,开发人员不能及时的发现XML中的错误,为了能尽可能的发现XML中的错误配置信息,如果一个Bean与被参考引用的Bean在同一个XML文件中,那么使用local形式将是最好的选择。 B:用Bean属性指定: 用ref元素的Bean属性指定被参考引用的Bean是Spring中常见的形式,它允许指向的Bean可以在同一个XML中,也可以不在同一个XML中,Bean属性的值可以与被参考引用的Bean的id属性相同,也可以与被参考引用的Bean的name属性相同。 C :用parent属性指定: 用parent属性指定被参考引用的Bean时,允许引用当前BeanFactory或ApplicationContext的父BeanFactory或ApplicationContext中的Bean。parent属性的值可以与被参考引用的Bean的id属性相同,也可以与被参考引用Bean的name属性相同。 用local属性与Bean属性指定依赖的比较: 在这三种模式中,用local属性指定依赖和用Bean属性指定依赖最为常用。 相同之处:两种模式都可以用Bean的id来进行参考引用,都可以对同一XML中的Bean进行参考引用。 不同之处:用Bean属性指定依赖可以用Bean的name来进行参考引用,还可以对不同XMl中得到Bean进行参考引用 ===========================练习一:ref的local属性来指定依赖============ ----------------HelloWord类 --------------- package com.gc.action; import java.util.Date; public class HelloWord { private String msg; private Date date; // 无参构造方法 public HelloWord() { super(); } // 带参构造 public HelloWord(String msg) { super(); this.msg = msg; } // ---getXxx 和setXxx public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } } ------------------------config.xml---------------- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www./dtd/spring-beans.dtd"> <beans> <bean id="HelloWord" class="com.gc.action.HelloWord" depends-on="date" > <property name="msg"> <value>zxx</value> </property> <property name="date"> <ref local="date"/> </property> </bean> <bean id="date" class="java.util.Date"></bean> </beans> -------------------TestHelloWord 测试类---------------------- package com.gc.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import com.gc.action.HelloWord; public class TestHelloWord { /** * @param args */ public static void main(String[] args) { ApplicationContext ac =new FileSystemXmlApplicationContext("classpath:/config.xml"); HelloWord hw =(HelloWord) ac.getBean("HelloWord"); System.out.println(hw.getMsg()+"----"+hw.getDate()); } } -----------结果-------------- zxx----Mon Nov 28 16:37:02 CST 2016 ========================练习二:用ref的Bean属性来指定依赖========= 其余类不变,xml修改: -------------------------config.xml---------------- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www./dtd/spring-beans.dtd"> <beans> <bean id="HelloWord" class="com.gc.action.HelloWord" depends-on="date" > <property name="msg"> <value>zxx</value> </property> <property name="date"> <ref bean="date"/> </property> </bean> <bean id="date" class="java.util.Date"></bean> </beans> ===================练习三 用ref的parent属性来指定依赖============= <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www./dtd/spring-beans.dtd"> <beans>
<bean id="HelloWord" class="com.gc.action.HelloWord" depends-on="date" > <property name="msg"> <value>zxx</value> </property> <property name="date"> <ref parent="date"/> </property> </bean> <bean id="date" class="java.util.Date"></bean> </beans> |
|
来自: 樱花梦_张艺馨 > 《Spring从入门到精通》