原因一
注入的service有多个实现,但是没有指定具体装配的是哪个bean,Spring就不知道去装配哪个bean
解决办法
使用注解指定实现类的名称
@Component("xxx") @Service("xxx") ...等注解
同时使用@Resource注解注入时需要指定bean的名称,Resource它默认是按名称依赖注入的
@Resource(name = "xxx")
这样就可以正确装配你想要的bean
原因二
如果按照原因一的方法进行设置了,还会出现无法注入bean的情况,可能是因为指定的bean名称是以defaultXXX开头,这也是我当时遇到的情况,修改个名字就好了,具体原因需要追溯到Spring的源码