关于一次“required a single bean, but 2 were found”的错误排查

我的项目刚开始做没多久,原本一切都是正常的,最近加多了一个TreeDao,然后启动的时候就报了以下错误:

Field baseMapper in com.baomidou.mybatisplus.extension.service.impl.ServiceImpl required a single bean, but 2 were found:

按照提示消息,我们可以大概知道它是说 ServiceImpl只能有一个bean,但是我这里出现了两个。这个是来源于MyBatisPlus的一个类,理论上是不会有什么问题的,那么来排查一下我自己的项目。

首先我的两个Dao都是没写任何东西的,还只是一个空的架子

那么既然说到是ServiceImpl的问题,那么再给大家看看,为了方便拓展,我是使用了一个BaseServiceImpl来继承它的,也就是说,如果出现问题,那么就是后面的子类里面出的问题了。

我是加入了Tree的相关文件后出的问题,在这之前,项目里面只有Login和User的相关文件,都是能够和谐共存

现在看看之前的两个是怎么写的

扫描二维码关注公众号,回复: 11419023 查看本文章

关于TreeServiceImpl是后面加上去的,写法是这样

那么细心的朋友应该已经能发现,Login的写法比较短,少了<... Dao, Bean> 这部分,但似乎在之前并没有什么影响。

然后我看了之前写的LoginDao,发现是没有像TreeDao那样有继承的,那现在我们也加上去试试。

好家伙,现在变成3个了

Field baseMapper in com.baomidou.mybatisplus.extension.service.impl.ServiceImpl required a single bean, but 3 were found:

既然如此,把Impl的也一起改了

正常启动了!

好的,现在我们以现象推导原理,以下是我的个人见解,不一定准确,如有错误请大家指正。

其实在下方的提示前,也有一段提示是这样的(原本是一整句话,我做了换行):

Exception encountered during context initialization - cancelling refresh attempt: 
org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'loginController': 
Injection of resource dependencies failed; 
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: 
Error creating bean with name 'loginService': 
Unsatisfied dependency expressed through field 'baseMapper'; 
nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: 
No qualifying bean of type 'com.baomidou.mybatisplus.core.mapper.BaseMapper<?>' available: 
expected single matching bean but found 3: loginDao,treeDao,userDao

我们可以直接理解倒数两行:对于BaseMapper,没有确切的类型一一对应,而其中有三个Dao。

这个错误看起来和后面的那句ServiceImpl的提示没什么关联

Field baseMapper in com.baomidou.mybatisplus.extension.service.impl.ServiceImpl required a single bean, but 3 were found:

我们再看看ServiceImpl的源代码,再结合实际情况了解,就可以知道

问题就出在ServiceImpl<M extends BaseMapper<T>, T> ,我们没有在Login里面指定类型的原因。

坑爹的地方在于,这个在编译时是不会报错的,连报错都要看两个地方,不然也是一头雾水(反正我是折腾了三天)。

至于为什么在一开始的Login和User那样的方式是可以正常运行的呢?就留给大家思考了。

猜你喜欢

转载自blog.csdn.net/tg928600774/article/details/102928497
今日推荐