SpringBoot启动失败:PersonService构造器所需PersonDao类型Bean无法找到求助
错误原因
你在PersonService的构造函数中通过@Qualifier("mongo")指定注入名称为mongo的PersonDao类型Bean,但项目中唯一实现PersonDao接口的FakePersonDataAccessService类,通过@Repository("fakeDao")注册到Spring容器的Bean名称为fakeDao,容器中不存在名称匹配的PersonDao实例,因此启动时抛出Bean找不到的异常。
解决方法
任选以下一种方案即可解决:
- 方案一:修改PersonService中的Qualifier取值,和实际注册的Bean名称匹配
将PersonService构造函数的注解修改为:
@Autowired public PersonService(@Qualifier("fakeDao") PersonDao personDao){ this.personDao = personDao; }
- 方案二:修改FakePersonDataAccessService的@Repository注解指定的Bean名称
将FakePersonDataAccessService类上的注解修改为:
@Repository("mongo") public class FakePersonDataAccessService implements PersonDao { // 原有逻辑不变 }
如果后续你计划新增MongoDB版本的PersonDao实现,直接给对应的实现类加上@Repository("mongo")注解,也可解决当前问题。
内容的提问来源于stack exchange,提问作者Elijah Leis
相关产品推荐
相关产品推荐

