available: expected single matching bean but found 2

available: expected single matching bean but found 2: smsLogServiceImpl,ISmsLogService

如上图,是在启动的时候出现的问题,从字意上可以看出,是说在注入bean的时候,出现了两个,spring不知道应该用哪个为好,这里说下可能出现到的原因:

1、譬如service层和mapper层没有引入对应的注解(@Service/@Mapper)引起的。

2、一个接口被两个实现类实现了,当使用到@Autowired注解引入的时候就会让spring不知道用哪个。

3、service和serviceImpl的命名,有这么个情况:
        如Service类命名为“ISmsLogService”和实现类命名为“smsLogServiceImpl”的时候,一般在视图层调用的时候会用@Autowired引入,但是此时要注意,引入的时候如果写成 private ISmsLogService smsLogService ; 就会出现问题了。原因是,ISmsLogService在初始化的时候加入到IOC容器的名称是去掉I的并且是以小写开头的name值“smsLogService”,在@Autowired引入的时候,会拿private ISmsLogService smsLogService ;中的“smsLogService”进行注入,此时就会与service的bean有冲突,就会报有两个,但不知道要用到哪一个的情况。
(就是把smsLogService改为smsLogServiceImpl也行,总之不要与service同名就好)

下面是解决方式:

1:在@Service注解中加入name值;

2:可以用@Resource(name=“”)注解,进行用新的bean名称注入(这个是JDK的注解);

3:在@Autowired的下方加上@Qualifier(value="")注解,value直接为需要用的的servie名;

        或许上述的解答不是很完善,也可能还会存在其他问题,知道的农名工朋友们可以一起写出来,有看到问题不知道怎么解决的工友看到了,方便排查问题,佛祖很喜欢有能力的人的,阿门。

【注】:在发现问题前,一点刚要先仔细查看自己的代码是否有那个地方是疏忽的,导致写错的,这类问题有时候很难排查的,写代码最好不要一连串写完才尝试测试,不然中间一旦出现问题,会很难受的。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值