今天在开发过程当中出现了下面的错误:
No qualifying bean of type 'xxx.xxx.xxx' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
或:
Not a managed type: class xxx.xxx.xxx
主要原因是标注了@SpringBootApplication的类与继承自JpaRepository接口的类在项目中的位置有关,解决方法是:
方案一、把 @SpringBootApplication 注解的 SpringBoot 入口类移到上层 root 包中,使 JpaRepository 子接口位于 root 包及其子包中。
方案二、在 SpringBoot 入口类上添加
(1) @ComponentScan(basePackages = "xxx.xxx.xxx"):扫描 @Controller、@Service 注解;
(2) @EnableJpaRepositories(basePackages = "xxx.xxx.xxx"):扫描 @Repository 注解;
(3) @EntityScan(basePackages = "xxx.xxx.xxx"):扫描 @Entity 注解;
需要注意的是,方案二中,如果只是使用@ComponentScan注解的话,是无法创建Jpa的Bean的,同理,如果开发过程当中使用到了MongoRepository的话,就需要增加@EnableMongoRepositories注解。