如何从外部访问Maven模块中的Spring Boot Repository接口?
解决Spring Data JPA跨Maven模块的Bean扫描问题
问题根源
你的@EnableJpaRepositories注解大概率没有明确指定Repository所在的包路径。当配置类放在单独Maven模块时,Spring默认只会扫描配置类所在的包及其子包,而你的MyRepository在de.demo.dbdomain.repo下,不在默认扫描范围内,导致容器无法创建Repository Bean。
解决步骤
修正配置类的扫描范围
在MyConfiguration类中,给@EnableJpaRepositories加上basePackages参数指定Repository所在包;同时添加@EntityScan指定实体类的包路径(否则JPA找不到实体类):@Configuration @EnableJpaRepositories(basePackages = "de.demo.dbdomain.repo") @EntityScan(basePackages = "de.demo.dbdomain.entity") public class MyConfiguration { // 如需自定义数据源、JPA属性等,可在此添加对应的Bean配置 }确保模块依赖正确
主应用的pom.xml必须添加对数据库模块的依赖,确保MyConfiguration和Repository类能被主应用的类加载器找到:<dependency> <groupId>de.demo</groupId> <artifactId>dbdomain-module</artifactId> <version>你的模块版本</version> </dependency>验证Repository接口的正确性
检查MyRepository是否正确继承了Spring Data JPA的Repository接口,比如:public interface MyRepository extends JpaRepository<YourEntity, Long> { // 自定义查询方法 }
额外提示
如果数据库模块需要独立配置数据源(比如和主应用用不同的数据库),可以在MyConfiguration中添加DataSource、EntityManagerFactory、TransactionManager等Bean的配置,避免和主应用的JPA配置冲突。
内容的提问来源于stack exchange,提问作者Groovieman
相关产品推荐
相关产品推荐

