springboot项目使用jpa时报错consider defining a bean of type '*.*.**Repository' in your configuration.

/ JAVA / 0 条评论 / 1120浏览

问题:今天使用多模块引用spring data jpa开发的时候,一个模块A引用另一个模块B,A与B包名不一致,B类似于组件,启动器在A模块中,当启动A的时候,一直无法引用B模块中的JPA实例。

原因:因为SpringBoot有一个规则,默认扫描的是启动器所在的路径下的包与文件,而我项目A模块与B模块包名均不一致,则A模块启动器自然扫描不到B模块中的实例。

解决:在启动类加上@EntityScan("com.miying.entity")和@EnableJpaRepositories("com.miying.dao")两个注解,前一个是扫描entity,后面是扫描repository,这样在其他地方使用repository的时候能够自动注入。

@EntityScan("com.miying.entity")
@EnableJpaRepositories("com.miying.dao")
public class BaseApplication {
  public static void main(String[] args) {
    SpringApplication.run(BaseApplication.class, args);
  }
}