You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨模块引用Repository触发UnsatisfiedDependencyException问题排查

问题排查与解决方案

针对你的Repository注入失败问题,可从以下几个方向排查:

1. 确认Spring Data JDBC依赖是否引入

Spring Data JDBC的Repository代理类生成依赖对应的starter包,如果项目中未引入,Spring无法识别并创建Repository Bean。

  • Gradle依赖配置:
implementation("org.springframework.boot:spring-boot-starter-data-jdbc")
  • Maven依赖配置:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>

2. 修正Repository接口的定义

单纯继承Repository<MyType, Int>不足以让Spring Data JDBC自动生成代理Bean,需做以下调整之一:

  • 改为继承CrudRepository<MyType, Int>(包含基础CRUD方法,符合你的需求场景):
interface MyRepository: CrudRepository<MyType, Int> {
    @Query("select * from my_type", nativeQuery=true)
    fun findAll(): List<MyType>
}
  • 或者在接口上添加@RepositoryDefinition注解,显式指定实体类和ID类型:
import org.springframework.data.repository.RepositoryDefinition

@RepositoryDefinition(domainClass = MyType::class, idClass = Int::class)
interface MyRepository: Repository<MyType, Int> {
    @Query("select * from my_type", nativeQuery=true)
    fun findAll(): List<MyType>
}

3. 明确@EnableJdbcRepositories的扫描范围

将@EnableJdbcRepositories的basePackages调整为Repository所在的具体子包,避免扫描范围歧义:

@EnableJdbcRepositories(basePackages = ["com.myapp.engine.repository"])

4. 检查MyService中的包名引用

错误提示中出现了com.webapp.engine.repository.MyRepository的包名(实际你的包是com.myapp),检查MyService中的import语句是否写错,确保注入的是正确的com.myapp.engine.repository.MyRepository类型。


内容的提问来源于stack exchange,提问作者Claudio Mezzasalma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:55:46