Spring Boot应用是否读取其他Jar包配置?冲突时优先级如何?
Spring Boot读取依赖Jar包配置的规则
Spring Boot会读取其他Jar包中的application配置文件(比如application.properties、application.yml这类符合命名规则的配置)。因为Spring Boot的配置加载机制会扫描整个classpath下的相关配置文件,而你引入的依赖Jar包默认会被加入项目的classpath中,所以这些Jar里的配置会被自动加载并合并到应用的配置体系中。
当多个配置源存在同一属性的不同值时,优先级规则从高到低如下:
- 项目自身的Profile特定配置(例如
application-dev.properties) - 项目自身的通用配置(例如
application.properties) - 依赖Jar包中的Profile特定配置(例如依赖Jar内的
application-dev.properties) - 依赖Jar包中的通用配置(例如依赖Jar内的
application.properties)
另外,当多个依赖Jar包属于同一优先级层级(比如都是通用配置)时,它们的配置优先级由classpath加载顺序决定:后被加载的Jar包中的配置会覆盖先被加载的。而classpath的顺序由构建工具的依赖解析规则控制:
- Maven中,直接依赖的Jar优先级高于传递依赖;同层级直接依赖里,声明顺序靠后的Jar会在classpath中更靠后加载,因此配置优先级更高。
- Gradle的规则类似,依赖声明顺序靠后的Jar,其配置会覆盖前面的。
内容的提问来源于stack exchange,提问作者Harsha
相关产品推荐
相关产品推荐

