You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring MVC中UserDao有两个实现类Bean时@Autowired注入哪个实例

结论

此时注入的是 UserDaoImpl 的实例。

原理说明

  • @Autowired 默认采用类型优先、属性名兜底的注入逻辑:
    1. 首先按注入的属性类型(此处为UserDao)匹配Spring容器中的Bean,当匹配到多个同类型Bean时,会自动降级为按「注入属性的名称」和「Bean的id」做字符串匹配。
    2. 你在Controller中声明的注入属性名为userDao,和XML中配置的id="userDao"的Bean(对应UserDaoImpl实现类)完全匹配,因此Spring会选择该实例完成注入。

拓展说明

如果你需要注入UserDaoImpl2的实例,可以在@Autowired注解下方追加@Qualifier("userDao2")注解,显式指定要注入的Bean的id,即可绕过默认的属性名匹配规则。
如果注入的属性名和所有同类型Bean的id都不匹配,Spring会直接抛出NoUniqueBeanDefinitionException异常,提示存在多个同类型Bean无法确定注入目标。


内容的提问来源于stack exchange,提问作者Umashankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:15:06