Spring笔记之五(分层 Bean Factory 使用)

本文研究Spring分层Bean Factory用法,先看有关代码:
 1 parent .xml
 2 
 3  <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
      "http://www.springframework.org/dtd/spring-beans.dtd"
>
 4  < beans >
 5       < bean  id ="injectBean"  class ="java.lang.String" >
 6              < constructor-arg >
 7                  < value > Bean In Parent </ value >
 8              </ constructor-arg >
 9       </ bean >
10       < bean  id ="injectBeanParent"  class ="java.lang.String" >
11              < constructor-arg >
12                  < value > Bean In Parent </ value >
13              </ constructor-arg >
14       </ bean >
15  </ beans >  

 1  beans.xml
 2 
 3  <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd"
>
 4  < beans >
 5       <!--  hierarchical bean factories  -->
 6       < bean  id ="target1"  class ="SimpleTarget" >
 7           < property  name ="val" >
 8               < ref  bean ="injectBeanParent" />
 9           </ property >
10       </ bean >
11      
12       < bean  id ="target2"  class ="SimpleTarget" >
13           < property  name ="val" >
14               < ref  local ="injectBean" />
15           </ property >
16       </ bean >
17      
18       < bean  id ="target3"  class ="SimpleTarget" >
19           < property  name ="val" >
20               < ref  parent ="injectBean" />
21           </ property >
22       </ bean >
23      
24       < bean  id ="injectBean"  class ="java.lang.String" >
25              < constructor-arg >
26                  < value > Bean In Child </ value >
27              </ constructor-arg >
28       </ bean >
29  </ beans >
30 

SimpleTarget中只有一属性String val


 1  public   static   void  main(String[] args) {
 2          BeanFactory parent  =   new  XmlBeanFactory( new  FileSystemResource(
 3                   " build/parent.xml " ));
 4          BeanFactory child  =   new  XmlBeanFactory( new  FileSystemResource(
 5                   " build/beans.xml " ), parent);
 6 
 7          SimpleTarget target1  =  (SimpleTarget) child.getBean( " target1 " );
 8          SimpleTarget target2  =  (SimpleTarget) child.getBean( " target2 " );
 9          SimpleTarget target3  =  (SimpleTarget) child.getBean( " target3 " );
10 
11          System.out.println(target1.getVal());
12          System.out.println(target2.getVal());
13          System.out.println(target3.getVal());
14      }

运行结果:
Bean In Parent
Bean In Child
Bean In Parent


分析过程:
在bean factory被加载过程中分别加载各层Bean Factory,
BeanFactory parent  = new XmlBeanFactory(new FileSystemResource("build/parent.xml"));
BeanFactory child = new XmlBeanFactory(new FileSystemResource("build/beans.xml"
), parent);
其中parent参数指定了bean factory间的父子关系。

分析结果:
第一行结果为在父factory中定义的参数,说明在子fantory中可以直接调用父fantory元素,类似于java中的继承关系。
第二行结果说明
< ref  local ="injectBean" />中local指向本fantory元素。
第三行结果为Bean In Parent,说明
< ref  parent ="injectBean" />中parent指向父fantory中元素。 


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值