专业的编程技术博客社区

网站首页 > 博客文章 正文

Springboot配置文件加载顺序(springboot的配置加载顺序)

baijin 2025-05-05 14:00:25 博客文章 4 ℃ 0 评论

Spring Boot配置文件的加载顺序是确定配置值如何被解析和覆盖的关键。以下是清晰的Spring Boot配置文件加载顺序的概述:

1. 开发者工具和测试配置

  • 开发者工具(Devtools)全局配置参数
  • 单元测试上的@TestPropertySource注解指定的参数
  • 单元测试上的@SpringBootTest注解指定的参数

2. 命令行参数

  • 命令行指定的参数,例如java -jar springboot.jar --name="Java技术栈"
  • 命令行中的SPRING_APPLICATION_JSON指定参数,如java -Dspring.application.json='{"name":"Java技术栈"}' -jar springboot.jar

3. Servlet容器初始化参数

  • ServletConfig初始化参数
  • ServletContext初始化参数

4. JNDI参数

  • 从java:comp/env/获取的JNDI参数,例如java:comp/env/spring.application.json

5. Java系统参数和环境变量

  • Java系统参数(来源:System.getProperties())
  • 操作系统环境变量参数

6. 随机值

  • RandomValuePropertySource:仅匹配random.*的属性值

7. 配置文件

  • 外部配置文件(JAR包外,优先级由高到低):application-{profile}.properties或application-{profile}.yml(在spring.profiles.active指定的profile中)application.properties或application.yml
  • 内部配置文件(JAR包内,优先级由高到低):/config/目录下的application.properties或application.yml类路径(classpath)根目录下的application.properties或application.yml通过@PropertySource注解指定的配置文件通过SpringApplication.setDefaultProperties指定的默认属性

8. 特殊配置

  • @Configuration类上的@PropertySource:指定额外的配置文件位置

注意事项

  • 当存在相同配置内容时,高优先级的配置会覆盖低优先级的配置。
  • 存在不同的配置内容时,高优先级和低优先级的配置内容取并集,共同生效,形成互补配置。
  • 可以通过spring.config.location来改变默认的配置文件位置。

这个加载顺序确保了Spring Boot能够灵活地处理各种配置源,并在它们之间建立优先级关系。


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表