news 2026/8/7 17:27:37

Spring 框架中的 Bean 继承:`parent` 属性 (XML配置)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring 框架中的 Bean 继承:`parent` 属性 (XML配置)

👨‍👧‍👦 Spring 框架中的 Bean 继承:parent属性 (XML配置)

在复杂的企业应用中,配置大量相似的组件(如数据访问对象DAODAODAO、服务ServiceServiceService)是常见的需求。这些组件往往需要共享相同的底层资源,例如数据库连接工厂或事务管理器。如果对每个组件都重复编写相同的配置,不仅工作量大,而且难以维护。

Spring 框架通过Bean 定义继承机制解决了这个问题,核心工具就是 Bean 定义中的parent属性。

1.parent属性的核心原理

Spring Bean 的继承,是一种配置数据的继承,而非 Java 类层次结构的继承。它允许一个 Bean 定义(称为子 Bean)从另一个 Bean 定义(称为父 Bean)继承所有的配置信息。

  • 父 Bean (Parent Bean):提供一个配置模板。它通常被标记为抽象(abstract="true",这意味着 Spring 容器不会尝试创建它的实例,它的唯一作用是作为配置蓝图。
  • 子 Bean (Child Bean):通过设置parent="父 Bean ID"来继承配置。子 Bean 必须指定一个具体的 Java 类,Spring 容器会实例化它。

2. 为什么需要 Bean 继承?

最典型的应用场景是集中管理底层资源依赖。

例如,在一个使用HibernateJPA的系统中,所有的DAODAODAO组件都需要注入同一个sessionFactory(会话工厂)。

🚫 不使用继承的问题:配置冗余

XML

<bean id="orderDao" class="com.example.OrderDaoImpl"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <bean id="userDao" class="com.example.UserDaoImpl"> <property name="sessionFactory" ref="sessionFactory" /> </bean>
✅ 使用继承的解决方案:创建模板

使用parent属性后,配置变得简洁而强大:

步骤一:定义抽象父 Bean 作为模板

首先,定义一个抽象的baseDaoTemplate,集中管理共享的依赖(如sessionFactory)。

XML

<bean id="baseDaoTemplate" abstract="true"> <property name="sessionFactory" ref="sessionFactory" /> </bean>

步骤二:子 Bean 继承模板

具体的DAODAODAO组件通过parent属性继承这个模板。

XML

<bean id="orderDao" class="com.example.OrderDaoImpl" parent="baseDaoTemplate"> <property name="modelName" value="Order" /> </bean> <bean id="userDao" class="com.example.UserDaoImpl" parent="baseDaoTemplate"> <property name="modelName" value="User" /> </bean>

3. Bean 继承的操作细节

使用parent属性时,子 Bean 拥有极高的灵活性:

操作描述示例
继承子 Bean 自动继承父 Bean 的所有配置(例如类名、属性值、构造函数参数等)。orderDao自动获得了sessionFactory属性的注入。
覆盖子 Bean 可以定义与父 Bean 同名的属性,以覆盖父 Bean 的值。如果orderDao想使用另一个sessionFactoryNew,它可以重新定义<property name="sessionFactory" ref="sessionFactoryNew" />来覆盖父 Bean 的配置。
添加子 Bean 可以定义父 Bean 中没有的新属性,如上例中的modelNameorderDaouserDao分别添加了各自的模型名称属性。

重要提示:

  • 子 Bean 总是使用自己的 Java 类定义。父 Bean 的class属性会被继承,但子 Bean 如果定义了自己的class,则会覆盖父 Bean 的类。
  • 如果父 Bean 是抽象的(abstract="true"),则它不能被实例化,只能被继承。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 22:20:03

磁吸充电宝主动散热方案设计

&#x1f393;作者简介&#xff1a;科技自媒体优质创作者 &#x1f310;个人主页&#xff1a;莱歌数字-CSDN博客 &#x1f48c;公众号&#xff1a;莱歌数字 &#x1f4f1;个人微信&#xff1a;yanshanYH 211、985硕士&#xff0c;职场15年 从事结构设计、热设计、售前、产品设…

作者头像 李华
网站建设 2026/8/6 11:39:55

安宝特 FME:零代码实时数据管理标杆,Safe Software 中国授权合作首选

在数字化转型加速的今天&#xff0c;企业对数据集成、管理效率的需求日益迫切。Safe Software 旗下的 FME 空间数据集成平台&#xff0c;凭借全数据兼容、零代码操作、实时响应的核心优势&#xff0c;成为 25,000 全球企业的信赖之选。而安宝特作为虹科姐妹公司&#xff0c;正…

作者头像 李华
网站建设 2026/8/7 22:30:37

GPT-5.2全面解析:从代码到长文档分析,AI助手新标杆

GPT-5.2作为OpenAI的背水一战之作&#xff0c;分为Instant、Thinking和Pro三版&#xff0c;在编程、长文档分析和视觉识别上实现突破&#xff0c;Thinking版在70.9%任务中达到人类专家水平。然而&#xff0c;其高延迟、昂贵成本及技术护城河消失等问题凸显。OpenAI面临200亿美元…

作者头像 李华
网站建设 2026/8/7 15:05:47

34、深入解析NFS服务器性能优化策略

深入解析NFS服务器性能优化策略 1. 网络问题排查与服务器性能概述 在网络环境中,数据包丢失可能由本地主机接口、网络拥塞或远程主机接口等多种原因导致。要消除所有与网络相关的影响,就必须对这些方面进行逐一检查。 当服务器无法处理新请求,或者不能有效调度和处理已接…

作者头像 李华
网站建设 2026/8/5 7:56:19

大模型学习全攻略:从理论基础到企业应用,一份资料搞定AI大模型学习

本文提供全面的AI大模型学习资料包&#xff0c;包含视频教程、学习路线、技术文档、行业报告、实战项目和面试真题。强调学习大模型对企业降本增效、产品创新及个人薪资提升、职业发展的重要性。资料由清华大学-加州理工双料博士领衔研发&#xff0c;适合零基础或有一定技术基础…

作者头像 李华
网站建设 2026/8/5 6:36:52

36、优化NFS和NIS网络性能:从拓扑到客户端调优

优化NFS和NIS网络性能:从拓扑到客户端调优 1. 网络拓扑与磁盘无客户端启动 1.1 网络拓扑的重要性 将客户端和服务器置于路由器同一侧,能显著减轻路由器负载。对于磁盘无客户端,为其配备足够内存可进行积极缓存,减少与服务器的往返次数。 1.2 跨路由器启动磁盘无客户端的…

作者头像 李华