Spring笔记之五(Hierarchical Bean Factory Usage)

转载 2007年09月25日 14:48:00

转贴处 http://www.blogjava.net/improviser/archive/2007/09/25/147934.html

本文研究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中元素。
 

Spring源码阅读之-bean的解析与注册

Sprin源码阅读之-bean的解析与注册接上,Spring初始化,refresh ApplicationContext时,通过refreshBeanFactory将原有的beanFactory注销,...
  • weiythi
  • weiythi
  • 2017年07月15日 14:12
  • 240

Spring 通过工厂方法(Factory Method)来配置bean

Spring 通过工厂方法(Factory Method)来配置bean在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean.在第...
  • nvd11
  • nvd11
  • 2016年05月31日 00:26
  • 16694

Stereo Matching文献笔记之(五):经典算法DoubleBP读后感~

DoubleBP是一个立体匹配全局算法,来自于论文《Stereo Matching with Color-Weighted Correlation, Hierarchical Belief Propa...
  • wsj998689aa
  • wsj998689aa
  • 2015年09月05日 20:34
  • 3575

spring详解:通过FactoryBean自定义工厂初始化Bean

FactoryBean是一个接口,扩展功能提供给用户自定义工厂方法和工厂对象用于实例化对象。...
  • u013458516
  • u013458516
  • 2015年11月03日 15:17
  • 2429

一,Spring容器BeanFactory和ApplicationContext对比

BeanFactory和ApplicationContext对比BeanFactory和ApplicationContext联系BeanFactory和ApplicationContext是Sprin...
  • u010871004
  • u010871004
  • 2016年12月12日 22:06
  • 851

手动从spring BeanFactory 获取bean (二)

自己的类 实现org.springframework.beans.factory.BeanFactoryAware 接口   BeanFactoryAware 接口中只有一个方法  setBean...
  • java2000_wl
  • java2000_wl
  • 2012年03月21日 14:38
  • 7415

spring通过工厂方法和FactoryBean来配置Bean

spring通过工厂方法配置Bean 1.通过调用静态工厂方法创建bean(直接调用某一个类的静态方法就可以返回bean的实例) 调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中,当...
  • Mrwuyi
  • Mrwuyi
  • 2016年06月03日 14:30
  • 2438

Spring4.3.x 容器中bean的创建过程(2)——实例化Bean

概述在Spring4.3.x 容器中bean的创建过程(1)——走进初始化bean的主要战场一篇中我们找到了初始化bean的主要场所在AbstractAutowireCapableBeanFactor...
  • chyohn
  • chyohn
  • 2017年02月10日 12:04
  • 1327

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

本文研究Spring分层Bean Factory用法,先看有关代码: Code highlighting produced by Actipro CodeHighlighter (freeware)h...
  • liyong1115
  • liyong1115
  • 2008年01月22日 14:54
  • 592

Spring实现Bean动态注册

注:此博客为转载,原地址为:http://blog.sina.com.cn/s/blog_74af50ec01018yy9.html                首先需要解释下,何谓Bea...
  • a150827
  • a150827
  • 2016年11月30日 13:02
  • 2139
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring笔记之五(Hierarchical Bean Factory Usage)
举报原因:
原因补充:

(最多只允许输入30个字)