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

Spring Boot多模块应用中如何读取子模块的application.properties?

Spring Boot多模块读取子模块配置文件的实用方案

针对你用Gradle buildSrc构建的多模块项目,要让主Spring Boot应用读取子模块的application.properties,可以用以下几种方法:

方法1:让主模块依赖子模块(最推荐)

Spring Boot默认会扫描classpath下所有依赖模块的src/main/resources目录,只要主模块依赖子模块,子模块的配置文件会自动被加载。

在主模块的build.gradle(或build.gradle.kts)中添加依赖:

// Groovy 语法
dependencies {
    implementation project(':subproject')
    // 其他业务依赖...
}
// Kotlin DSL 语法
dependencies {
    implementation(project(":subproject"))
    // 其他业务依赖...
}

如果子模块是普通Java库(非Spring Boot模块)也完全适用,只要被主模块依赖,它的配置文件就会被纳入classpath扫描范围。

方法2:手动将子模块资源目录加入主模块classpath

如果不想依赖整个子模块,只想加载其配置文件,可以通过Gradle配置,将子模块的资源目录添加到主模块的资源源目录中:

// Groovy 语法
sourceSets {
    main {
        resources {
            srcDirs += project(':subproject').sourceSets.main.resources.srcDirs
        }
    }
}
// Kotlin DSL 语法
sourceSets {
    main {
        resources {
            srcDirs.add(project(":subproject").sourceSets.main.get().resources.srcDirs)
        }
    }
}

这样构建时,子模块的application.properties会被当作主模块的资源文件处理,自然会被Spring Boot读取。

方法3:通过Spring配置导入指定文件

如果子模块的配置文件名和主模块重复,或者需要更灵活的加载控制,可以在主模块的application.properties中显式导入子模块的配置:

# 主模块application.properties
# 导入子模块的配置文件
spring.config.import=classpath:/application.properties

注意:如果主模块和子模块有同名配置项,子模块的配置会覆盖主模块的(Spring Boot按classpath加载顺序,后加载的覆盖先加载的)。如果要避免覆盖,建议给子模块的配置文件改名(比如application-subproject.properties),然后导入:

spring.config.import=classpath:/application-subproject.properties

配合buildSrc的优化

如果你的项目有多个子模块需要统一处理,可以在buildSrc中编写自定义Gradle插件,将上述依赖或资源目录配置逻辑封装起来,避免重复代码。比如创建一个SpringBootModulePlugin,自动让主模块依赖指定的子模块,或者自动添加子模块的资源目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:07:28