Sub-interface implemented by bean factories that can be part of a hierarchy.
HierarchicalBeanFactory 表示的是这些 Bean 是有继承关系的,也就是每个Bean 有可能有父 Bean
public interface HierarchicalBeanFactory extends BeanFactory {
BeanFactory getParentBeanFactory(); //返回本Bean工厂的父工厂
boolean containsLocalBean(String name); //本地工厂是否包含这个Bean
}
1、第一个方法返回本Bean工厂的父工厂。这个方法实现了工厂的分层。
2、第二个方法判断本地工厂是否包含这个Bean(忽略其他所有父工厂)。这也是分层思想的体现。
总结:这个工厂接口非常简单,实现了Bean工厂的分层。这个工厂接口也是继承自BeanFacotory,也是一个二级接口,相对于父接口,它只扩展了一个重要的功能——工厂分层。
parent.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="injectBean" class="java.lang.String">
<constructor-arg>
<value>Bean In Parent</value>
</constructor-arg>
</bean>
<bean id="injectBeanParent" class="java.lang.String">
<constructor-arg>
<value>Bean In Parent</value>
</constructor-arg>
</bean>
</beans>
beans.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- hierarchical bean factories -->
<bean id="target1" class="SimpleTarget">
<property name="val">
<ref bean="injectBeanParent"/>
</property>
</bean>
<bean id="target2" class="SimpleTarget">
<property name="val">
<ref local="injectBean"/>
</property>
</bean>
<bean id="target3" class="SimpleTarget">
<property name="val">
<ref parent="injectBean"/>
</property>
</bean>
<bean id="injectBean" class="java.lang.String">
<constructor-arg>
<value>Bean In Child</value>
</constructor-arg>
</bean>
</beans>
SimpleTarget中只有一属性String val
public static void main(String[] args) {
BeanFactory parent = new XmlBeanFactory(new FileSystemResource(
"build/parent.xml"));
BeanFactory child = new XmlBeanFactory(new FileSystemResource(
"build/beans.xml"), parent);
SimpleTarget target1 = (SimpleTarget) child.getBean("target1");
SimpleTarget target2 = (SimpleTarget) child.getBean("target2");
SimpleTarget target3 = (SimpleTarget) child.getBean("target3");
System.out.println(target1.getVal());
System.out.println(target2.getVal());
System.out.println(target3.getVal());
}
运行结果:
- 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中元素。
分享到:
相关推荐
不同于其它的架构方法,领域驱动设计DDD(DomainDrivenDesign)提出了从业务设计到代码实现一致性的要求,不再对分析模型和实现模型进行区分。也就是说从代码的结构中我们可以直接理解业务的设计,命名得当的话,非...
在应用系统开发中,采用严格的、单一的、真正的的分层架构是可以的,但实际上我们已经采用了多种架构模式设计系统。当多种不同范式的架构混合在一起,你会不会出现“指鹿为马”的现象呢? 在研究分层架构时,常通过...
高中数学必修三课件:分层抽样PPT课件.pptx
考虑横摆稳定性的车辆路径跟踪控制:分层控制器设计与Simlink-Carsim联合仿真验证,考虑横摆稳定性的车辆路径跟踪控制 ~ 采用分层控制器 ~ 上层控制器基于MPC计算车辆前轮转角和附加横摆力矩 ~ 下层控制器基于轮胎...
【标题】:“33传统的可扩展架构模式:分层架构和SOA1” 【描述】:“1. C/S架构、B/S架构 3. 逻辑分层架构 1. 服务” 【标签】:“微服务 mvc 操作系统” 本文将深入探讨两种传统可扩展架构模式:分层架构和面向...
CarSim-Simulink联合仿真实现ACC自动巡航跟随:分层控制策略详解与跟车效果展示,carsim-simulink联合仿真,ACC自动巡航跟随。 在simulink搭建控制策略,上下层分层控制。 包含安全距离模型,逆发动机模型,逆制动...
A股进化论20系列报告(一):分层时代,进化新生-0718-广发证券-26页.pdf
软件开发:分层技术在软件开发中的应用 分层技术是软件开发过程中的一个重要概念,它可以将软件系统分解为多个层次,每个层次都有其特定的功能和作用。这种分解使得软件系统变得更加灵活、可维护和可扩展。在本文中...
站在巨人的肩膀上:分层设计在 Nervos 生态系统中的 layer 2区块链上的实际应用-SACC2021年中国系统架构师大会
"Neo:分层混淆矩阵可视化_TypeScript_Svelte_下载.zip" 这个标题表明我们讨论的是一个名为“Neo”的项目,它专注于实现分层混淆矩阵的可视化。这里使用的编程语言是TypeScript,同时利用了Svelte这个前端框架。文件...
在本篇中,我们将深入探讨如何使用MATLAB进行分层聚类分析,并绘制相应的分析图。MATLAB是一款强大的数学计算软件,广泛应用于数据分析、建模和可视化等领域。分层聚类是一种无监督学习方法,主要用于将数据集中的...
【分层架构】 分层架构是一种常见的软件设计模式,它将复杂的系统分解为若干个相互独立的层次,每个层次负责特定的功能,以实现模块化和解耦。这种架构模式通常包含用户界面层、业务逻辑层、数据访问层等,有时还...
这是中科院自动化所宗成庆研究员指导的博士生鉴萍提供的源代码,其中调用了CRF库函数(可在VC6.0下编译),使用者请尊重原作者的版权。有问题可咨询pjian@nlpr.ia.ac.cn。
消费分级研究报告:需求分层推动供给分级,喜茶、盒马、拼多多们的兴盛之道(49页),资源名称:消费分级研究报告:需求分层推动供给分级,喜茶、盒马、拼多多们的兴盛之道(49页)20190628-招商证券-招商证券消费...
投资者对于分层政策的推出持有较高期待,认为分层后能够提升市场流动性,并带来更多投资机会。 3. 做市制度的规范:新三板市场的交易制度之一是做市商制度,做市商可以为市场提供买卖双向报价,增加市场交易的活跃...
软件结构设计-分层系统风格讲义 软件结构设计是软件开发中至关重要的一步骤,它直接影响着软件的质量、可维护性和可扩展性。分层系统风格是软件结构设计中的一种常见的体系结构风格,它将软件系统分层组织,形成一...
"V5:分层排队网络求解器"是一款专门用于解决复杂网络流量分配问题的软件工具,它基于分层排队理论进行设计。在IT行业中,排队理论是运筹学的一个分支,常用于优化系统性能,特别是在高并发和资源有限的环境中,如...
在探讨高职院校数据结构分层教学方法的这篇论文中,作者伦萍萍介绍了分层教学的概念,并结合数据结构课程的特点,提出了针对不同学习水平学生的分层教学实施策略。以下是本篇论文中涉及的重要知识点: 分层教学概述...
1. **分层随机抽样定义**:分层随机抽样是一种统计抽样方法,它将总体分为不同的层(或类别),然后在每一层内独立地进行随机抽样,以确保样本能反映总体的多样性。在这个高中数学练习中,通常涉及的是根据某些特征...
《hts:分层与分组时间序列分析的深度探讨》 在数据分析领域,时间序列是一种重要的数据类型,尤其在经济、金融、气象预测以及工业生产等多领域中有着广泛的应用。R语言作为统计分析的强大工具,提供了丰富的库来...