扫码阅读
手机扫码阅读

当注入的 Bean 存在冲突时,到底有多少种解决方案?松哥总结了 5 种!

4 2024-11-27

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:当注入的 Bean 存在冲突时,到底有多少种解决方案?松哥总结了 5 种!
文章来源:
江南一点雨
扫码关注公众号

文章介绍了在使用Spring框架时,如何解决通过类型获取Bean时可能遇到的多个实例导致的失败问题。提供了五种解决方案,并邀请读者探索其他可能的方案。

1. 问题呈现

描述了一个常见的问题,即当一个类A需要注入类B,而配置类中存在B的多个实例,这会导致项目启动时抛出异常。

2. 解决方案分析

2.1 @Resource

介绍了使用@Resource注解的方式,这要求添加额外的依赖,然后可以指定Bean的名称来注入所需的实例。

2.2 @Qualifier 指定name

通过@Qualifier注解和@Autowired注解结合使用,可以指定需要注入的Bean的名称。

2.3 @Qualifier 不指定name

提出了一种不指定BeanName的@Qualifier用法,这要求在注册和注入Bean时都使用@Qualifier注解。

2.4 不作为候选Bean

介绍了在注册Bean时设置该Bean不作为候选Bean的方法,这样在通过类型注入时,它就不会被考虑。

2.5 @Primary

解释了@Primary注解的用法,它指出在存在多个Bean实例时,通过类型注入将优先选择带有@Primary注解的Bean。

文章最后提出了一个问题,关于如果同时使用@Qualifier指定name和@Primary,哪一个会生效,以此来刺激读者的思考。

文章结尾再次提到了TienChin视频,强调其采用的技术栈,并邀请读者参与完成一个高完成率的项目。

想要了解更多内容?

查看原文:当注入的 Bean 存在冲突时,到底有多少种解决方案?松哥总结了 5 种!
文章来源:
江南一点雨
扫码关注公众号