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

Spring Boot+Gradle多模块下web模块无法访问core模块JpaRepository问题

问题根因

你遇到的编译错误是Gradle依赖传递规则导致的:

  • Gradle中implementation配置声明的依赖仅作用于当前模块的编译期,不会传递到依赖该模块的下游项目的编译classpath中,仅会在运行期加载。你在demo-core模块中用implementation声明了spring-boot-starter-data-jpa依赖,所以该依赖里的JpaRepository类只能在demo-core模块的编译期被访问,demo-web模块编译时无法读取到该类。
  • 封装CustomerFinder后可正常运行的原因是:你调用CustomerFinder的公开方法时,方法签名没有暴露任何JpaRepository相关的类型,demo-web编译阶段不需要加载JpaRepository类,运行期所有依赖都会加载,因此不会报错。
解决方案

有两种可行的修复方式,按需选择即可:

方案1:修改demo-core的依赖传递规则

如果希望demo-core的JPA相关依赖自动传递给下游模块,可将implementation改为api配置:

  1. 首先在demo-core的build.gradle中引入java-library插件(api配置由该插件提供):
// 替换原有apply plugin: 'java'
apply plugin: 'java-library'

group 'com.example'
version '0.0.1-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'com.h2database:h2:1.4.200'
    // 替换原有implementation为api
    api 'org.springframework.boot:spring-boot-starter-data-jpa:2.5.3'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}

test {
    useJUnitPlatform()
}

修改后重新构建项目即可解决编译错误。

方案2:demo-web显式引入JPA依赖

如果不希望修改demo-core的依赖传递规则,可直接在demo-web的build.gradle中单独添加spring-boot-starter-data-jpa依赖:

plugins {
    id 'org.springframework.boot' version '2.5.3'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group 'com.example'
version '0.0.1-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation project(':demo-core')
    implementation 'org.springframework.boot:spring-boot-starter-web'
    // 新增JPA依赖
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.5.3'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}

test {
    useJUnitPlatform()
}

修改后重新构建即可正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:21:02