Spring @Bean注解用法

news/2025/10/29 11:34:45/文章来源:https://www.cnblogs.com/aibi1/p/19173911

目录
  • 1. 基础逻辑:按类型匹配(byType)
  • 2. 多个子类Bean的情况:类型冲突与解决
    • 方式1:使用@Primary指定优先Bean
    • 方式2:使用@Qualifier指定Bean名称
  • 总结

在Spring框架中,当一个@Bean方法的入参需要注入依赖时(如你示例中的DbStateMachineConfig),其依赖解析逻辑遵循Spring的依赖注入规则,核心是“按类型匹配,按名称兜底”。

1. 基础逻辑:按类型匹配(byType)

Spring会先根据入参的类型(DbStateMachineConfig 在容器中查找匹配的Bean。

  • 如果容器中只有一个类型为DbStateMachineConfig或其子类的Bean(因为子类是父类的“is-a”关系,符合类型匹配),Spring会直接将该Bean注入到方法参数中。
  • 例如:如果有一个MyDbStateMachineConfig extends DbStateMachineConfig,且它被注册为Bean,那么Spring会认为它是DbStateMachineConfig类型的候选者,直接注入。

2. 多个子类Bean的情况:类型冲突与解决

如果容器中存在多个DbStateMachineConfig的子类Bean(即多个候选者),仅按类型无法唯一确定,此时Spring会抛出NoUniqueBeanDefinitionException异常。

需要通过以下方式手动指定具体使用哪个Bean:

方式1:使用@Primary指定优先Bean

在多个子类Bean中,给需要优先注入的子类Bean添加@Primary注解。当类型匹配存在多个候选者时,Spring会优先选择被@Primary标注的Bean。

示例:

// 子类1:被@Primary标注,优先注入
@Bean
@Primary
public class FirstDbConfig extends DbStateMachineConfig { ... }// 子类2:不标注@Primary
@Bean
public class SecondDbConfig extends DbStateMachineConfig { ... }// 此时,stateMachineEngine方法会注入FirstDbConfig

方式2:使用@Qualifier指定Bean名称

通过@Qualifier注解明确指定需要注入的Bean的名称(默认是类名首字母小写,如firstDbConfigsecondDbConfig),实现“按名称匹配”。

示例:

// 子类1:指定Bean名称为"firstConfig"
@Bean("firstConfig")
public class FirstDbConfig extends DbStateMachineConfig { ... }// 子类2:指定Bean名称为"secondConfig"
@Bean("secondConfig")
public class SecondDbConfig extends DbStateMachineConfig { ... }// 在入参上通过@Qualifier指定名称
@Bean
public ProcessCtrlStateMachineEngine stateMachineEngine(@Qualifier("firstConfig") DbStateMachineConfig dbStateMachineConfig
) {...
}
// 此时,注入的是名称为"firstConfig"的FirstDbConfig

总结

  • Spring默认按类型解析@Bean方法的入参依赖,子类Bean会被视为父类类型的候选者。
  • 多个子类Bean存在时,必须通过@Primary(指定优先)或@Qualifier(指定名称)解决冲突,否则会抛出类型不唯一的异常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于MATLAB的视频车流量统计系统实现

1. 系统架构设计2. 核心算法实现 2.1 视频预处理 % 读取视频文件 video = VideoReader(traffic.mp4); vidReader = vision.VideoFileReader(video.Filename);% 转换为灰度图像(降低计算量) grayVideo = vision.Color…

vscode调试时显示张量的维度shape

在程序的入口添加 如下代码即可:import torch def patch_tensor_repr():original_repr = torch.Tensor.__repr__def new_repr(self):shape_str = f"Shape: {tuple(self.shape)}"tensor_str = original_repr…

2025 年大型电子地磅,汽车衡电子地磅,120 吨电子地磅,100 吨电子地磅 厂家最新推荐,产能、专利、环保三维数据透视

引言 为精准筛选 2025 年大型电子地磅(含汽车衡、120 吨及 100 吨电子地磅)优质厂家,衡器协会联合行业权威检测机构开展专项测评。测评以产能、专利、环保为核心维度,结合市场口碑与服务能力综合评估:产能维度核查…

2025年净气活性炭定做厂家权威推荐:除味活性炭工厂/废气净化活性炭源头厂家/空气净化活性炭厂家精选

随着环保政策的持续推进和工业净化需求的不断提升,定制化活性炭市场正迎来新一轮增长,专业生产厂家凭借差异化产品与技术优势占据竞争高地。 净气活性炭作为工业净化、环境治理和水处理领域的核心材料,其定制化市场…

2025年超声波分散设备厂商权威推荐榜单:进口超声波分散设备/本多超声波分散设备/双频超声波分散设备源头厂家精选

超声波分散技术正悄然推动新能源、新材料等领域的产业升级,其设备市场规模预计在2031年达到126.7亿元。 超声波分散设备作为现代工业中颗粒分散和纳米材料制备的关键设备,已广泛应用于新能源电池、石墨烯、化工涂料等…

Element(key):通过控件的 key 属性获取控件对象

在 PySimpleGUI 中,FindElement(key) 或 Element(key) 方法用于通过控件的唯一标识符 key 获取对应的控件对象,以便动态修改其属性(如文本、颜色、可见性等)。以下是具体示例:示例场景 假设有一个窗口,包含以下控…

ubuntu服务器jar包开机60秒后自启

1、创建start_all.sh文件nohup java -jar /opt/sxygsj/jar/dp-system.jar > /opt/sxygsj/jar/dp-system.log 2>&1 & echo "dp-system.jar 启动中,日志:/opt/sxygsj/jar/dp-system.log"nohup…

2025年线槽定做厂家权威推荐榜单:pc线槽/线槽管/pvc水槽源头厂家精选

在工业自动化与智能建筑迅猛发展的今天,定制化线槽已成为保障电缆管理效率与安全的核心组件。 据2025年最新行业调研显示,中国定制线槽市场规模已突破35亿元,年均增长率保持在12%以上。随着新能源、数据中心等新基建…

CH5xx 蓝牙主机低功耗测试

CH5xx 蓝牙主机低功耗测试本文使用CH592进行测试, 主机低功耗分为两个部分,一个是扫描状态,另一个是连接状态。 已EVT例程BLE目录下的Central例程为例, 1.将HAL_SLEEP(动态休眠降低功耗)和DCDC_ENANBLE(电源开启…

HTML实用技巧分享:那些不为人知但超级好用的小窍门

作为前端开发者,我发现HTML中有许多被低估但极其实用的技巧。今天,我想分享一些我在实际项目中发现的HTML宝藏功能,它们可能不常被提及,却能显著提升开发效率和用户体验。 1. 使用<details>和<summary>…

sg.window有哪些属性和方法

在 PySimpleGUI 中,sg.Window 是创建图形用户界面(GUI)窗口的核心类,其属性和方法支持窗口的定制化与交互逻辑实现。以下是关键属性和方法的分类说明: 核心属性窗口标题与尺寸title:窗口标题栏显示的文本(通过 …

macOS 安装 x86架构的 kali 虚拟机 - Mr

macOS安装x86架构的kali虚拟机 UTM下载安装 官网:https://mac.getutm.app/ 下载链接:https://github.com/utmapp/UTM/releases/latest/download/UTM.dmg安装kali虚拟机创建一个新的虚拟机选择模拟选择 其他选择 kali…

QPSK/BPSK在多径信道下经过LMS均衡器后的误码率曲线分析

MATLAB仿真,分析QPSK和BPSK在多径信道下经过LMS均衡器后的误码率性能。 系统模型概述 %% QPSK/BPSK在多径信道下经过LMS均衡器的误码率仿真 clear; close all; clc;% 系统参数设置 system_params = initialize_system…

2025年常温固化型酚醛环氧涂料生产厂家权威推荐:耐高锰酸钠富辛环氧涂料订制厂家/高性能厚浆环氧涂料涂料厂商/乙烯基防水防腐涂料优质厂家精选

在工业防护领域,常温固化型酚醛环氧涂料因其独特的施工便利性和卓越的耐腐蚀性能,正成为众多工程项目的重要选择。 常温固化型酚醛环氧涂料作为工业防腐的重要材料,其市场需求持续增长。这类涂料结合了酚醛树脂的耐…

2025年10月中国管理咨询公司评价榜:六强数据化横向对比

“订单交付又延期,利润被成本吃掉,数字化到底该从哪一步下手?”——这是过去半年里,我接听过的制造企业来电中最集中的困惑。工信部2024年四季度抽查显示,61.3%的中小制造企业产能利用率低于75%,其中近半数把“管…

2025年10月中国管理咨询公司实力榜:金蓝盟领衔五强横向评测

如果你正在寻找能够真正落地、带来可量化效益的管理咨询公司,大概率已经经历过这些场景:战略方向模糊、生产现场浪费居高不下、销售增长乏力、组织人才断层、数字化投入看不到回报。工信部2024年度报告显示,规模以上…

2025年固定式气体报警器定做厂家权威推荐榜单:可燃气体报警仪/无线气体检测仪/便携气体检测仪源头厂家精选

在工业安全领域,固定式气体报警器是保障生产环境安全、预防气体泄漏事故的核心设备,广泛应用于石油化工、市政燃气、新能源储能等场景。随着2025年GB12358-2024《作业场所环境气体检测报警仪器通用技术要求》等新标准…

2025年10月精益管理咨询公司推荐:口碑排行全对比

“订单准交率又掉五个点,库存周转天数却居高不下,老板拍桌子,生产、采购、物流相互甩锅”——这是近半年我在调研中听到最多的场景。工信部2024年二季度报告显示,我国规上制造企业平均产能利用率74.8%,低于75%的景…

2025年10月精益管理咨询公司推荐:实力榜排名与场景指南

制造业订单碎片化、成本刚性上涨、交期越缩越短,让“精益”从可选变成生存必答题。工信部2024年度调研显示,导入系统精益咨询的企业平均产能利用率提升11个百分点,库存周转天数下降18天,但同期市场上出现近三千家打…

机器学习之随机森林

随机森林(Random Forest)是一种集成学习算法,它通过构建多个决策树并将其预测结果进行集成来提高模型的准确性和稳定性。该算法可以用于分类和回归任务,因其易于使用、灵活性高和性能优越而广受欢迎。 工作原理 随…