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中元素。
分享到:
相关推荐
基于P2混合动力汽车构型的能量管理与ACC跟车优化控制策略:分层与融合优化实现多目标效能提升,基于P2混合动力汽车构型的能量管理与ACC跟车优化控制策略:分层与融合优化实现多目标高效管理,混合动力汽车能量管理与...
不同于其它的架构方法,领域驱动设计DDD(DomainDrivenDesign)提出了从业务设计到代码实现一致性的要求,不再对分析模型和实现模型进行区分。也就是说从代码的结构中我们可以直接理解业务的设计,命名得当的话,非...
分布式驱动汽车稳定性控制Simulink模型:分层控制策略与七自由度整车模型研究,分布式驱动汽车稳定性控制Simulink模型:分层控制策略与七自由度整车模型研究,分布式驱动汽车稳定性控制。 采用纯Simulink模型搭建,...
Qt可视化大屏电子看板系统:分层设计,丰富子控件,灵活数据源,跨平台支持(Qt4.6至Qt5.15),Qt可视化大屏电子看板系统:分层设计,丰富子控件,灵活数据源,跨平台支持(Qt4.6-Qt5.15,适配win、linux、mac、uos)...
在应用系统开发中,采用严格的、单一的、真正的的分层架构是可以的,但实际上我们已经采用了多种架构模式设计系统。当多种不同范式的架构混合在一起,你会不会出现“指鹿为马”的现象呢? 在研究分层架构时,常通过...
高中数学必修三课件:分层抽样PPT课件.pptx
考虑横摆稳定性的车辆路径跟踪控制:分层控制器设计与Simlink-Carsim联合仿真验证,考虑横摆稳定性的车辆路径跟踪控制 ~ 采用分层控制器 ~ 上层控制器基于MPC计算车辆前轮转角和附加横摆力矩 ~ 下层控制器基于轮胎...
【标题】:“33传统的可扩展架构模式:分层架构和SOA1” 【描述】:“1. C/S架构、B/S架构 3. 逻辑分层架构 1. 服务” 【标签】:“微服务 mvc 操作系统” 本文将深入探讨两种传统可扩展架构模式:分层架构和面向...
CarSim-Simulink联合仿真实现ACC自动巡航跟随:分层控制策略详解与跟车效果展示,carsim-simulink联合仿真,ACC自动巡航跟随。 在simulink搭建控制策略,上下层分层控制。 包含安全距离模型,逆发动机模型,逆制动...
基于多目标优化的模糊变权重MPC在ACC巡航控制中的应用:分层控制策略与电动汽车动力学模型整合,基于模糊变权重MPC的ACC巡航控制: 采用分层式控制方法,上层采用MPC控制,得到期望加速度,首先建立考虑前车加速度...
A股进化论20系列报告(一):分层时代,进化新生-0718-广发证券-26页.pdf
Cruise双电机四轮驱动与单电机前驱模型的多维度联合仿真方案:分层建模及控制策略分析结合SP资料的综合探讨,Cruise双电机四轮驱动与单电机前驱模型的多层控制策略及其联合仿真研究,SP资料详述,Cruise双电机四轮驱动...
软件开发:分层技术在软件开发中的应用 分层技术是软件开发过程中的一个重要概念,它可以将软件系统分解为多个层次,每个层次都有其特定的功能和作用。这种分解使得软件系统变得更加灵活、可维护和可扩展。在本文中...
站在巨人的肩膀上:分层设计在 Nervos 生态系统中的 layer 2区块链上的实际应用-SACC2021年中国系统架构师大会
"Neo:分层混淆矩阵可视化_TypeScript_Svelte_下载.zip" 这个标题表明我们讨论的是一个名为“Neo”的项目,它专注于实现分层混淆矩阵的可视化。这里使用的编程语言是TypeScript,同时利用了Svelte这个前端框架。文件...
在本篇中,我们将深入探讨如何使用MATLAB进行分层聚类分析,并绘制相应的分析图。MATLAB是一款强大的数学计算软件,广泛应用于数据分析、建模和可视化等领域。分层聚类是一种无监督学习方法,主要用于将数据集中的...
汇川PLC 5U程序框架:全功能架构搭建,分层分类设计,逻辑完善,适用于多种PLC品牌参考,轴控功能强大且互锁逻辑防呆。,基于汇川5U的全功能程序框架:分层架构、状态管理、互斥与互锁逻辑及轴控功能封装。,汇川5U很...
分布式驱动车辆能量优化与稳定性协调控制仿真研究:基于滑模与PID控制策略的电机能量损耗最小化,基于分布式驱动车辆的电机能量损耗与稳定性协调优化控制策略:分层策略实现附加横摆力矩与轮胎滑移能量的平衡管理,...
【分层架构】 分层架构是一种常见的软件设计模式,它将复杂的系统分解为若干个相互独立的层次,每个层次负责特定的功能,以实现模块化和解耦。这种架构模式通常包含用户界面层、业务逻辑层、数据访问层等,有时还...
这是中科院自动化所宗成庆研究员指导的博士生鉴萍提供的源代码,其中调用了CRF库函数(可在VC6.0下编译),使用者请尊重原作者的版权。有问题可咨询pjian@nlpr.ia.ac.cn。