若依框架前后端分离版required a single bean, but 2 were found
温馨提示:
本文最后更新于 2022年07月18日,已超过 812 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
问题
在使用若依的前后端分离的框架做项目时,很多人会选择将自己的业务模块独立出来,这样能将自己的业务代码和框架解耦
问题场景:
①使用若依的代码生成工具
②新业务模块独立出来,不放在ruoyi-system下了,并且更换包路径
在按照若依官方的常见问题操作了一番还是会有问题。
问题分析
由于好久没有使用若依了并且之前都没有将业务模块独立出来,所以这次找了好久也没有找到问题,一度认为是我的操作有问题。
从报错可以看出来我的问题是bizCatelogService
这个bean有两个,而我在BizCatelogController
中注入的时候不知道使用哪一个。
既然它不知道使用哪个那我们就给他指定名称进行注入
ps. 若依原来没有写名称那就默认通过类型来进行注入。
解决办法
声明bean的时候,指定名称
@Service("bizCatelogService")
Controller中注入bean的时候通过名称来进行注入
@Autowired
@Qualifier("bizCatelogService")
尝试了一下,结果真的可以了。
总结
最后大胆猜想一下出现这个问题的原因,我们再将业务模块独立出来的时候需要,新增我们包的访问路径
@ComponentScan({"com.ruoyi.*","com.it1997.*"})
我猜想问题就出现在这里,我们在若依的模块里引入了我们的模块,这样就会注入有两个bean了
所以在使用的时候不知道如何选择。
代码生成工具优化
在注入bean的地方增加按名称来进行注入controller.java.vm
import org.springframework.beans.factory.annotation.Qualifier;
@Qualifier("${className}Service")
serviceImpl.java.vm
在声明bean的地方指定名称
@Service("${className}Service")
正文到此结束
- 本文标签: Spring Boot 若依
- 本文链接: https://www.it1997.com/article/95
- 版权声明: 本文由小陈没烦恼原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权