请说说SpringBoot配置的优先级
时间: 2023-06-05 09:07:34 浏览: 49
Spring Boot 配置的优先级按照以下顺序:
1. 命令行参数
2. Java 系统环境变量
3. Java 系统属性
4. RandomValuePropertySource 中的属性(测试时使用)
5. 应用程序 jar 包外部的 application-{profile}.properties 或 application.yml(带有特定配置文件文件名的基于Servlet的环境中支持的格式
6. 应用程序 jar 包内部的 application-{profile}.properties 或 application.yml(带有特定配置文件文件名的基于Servlet的环境中支持的格式
7. 应用程序 jar 包外部的 application.properties 或 application.yml(不带配置文件名)
8. 应用程序 jar 包内部的 application.properties 或 application.yml(不带配置文件名)
9. @Configuration 注解类上的 @PropertySource 注解
10. 通过 SpringApplication.setDefaultProperties 指定的默认属性。
以上是 Spring Boot 配置的优先级顺序。
相关问题
springboot配置优先级
Spring Boot 的配置优先级可以按照以下顺序进行解析和加载:
1. 命令行参数:可以通过在运行时使用命令行参数来覆盖配置文件中的属性值。例如,使用 `--server.port=8080` 来指定端口号为 8080。
2. Java 系统属性:可以通过在运行时使用 `-D` 参数来设置 Java 系统属性,这些属性可以在应用程序中作为配置属性使用。例如,使用 `-Dserver.port=8080` 来指定端口号为 8080。
3. 环境变量:可以通过设置操作系统的环境变量来配置应用程序的属性。Spring Boot 默认会将环境变量中的属性转换为小写,并使用下划线作为分隔符。例如,设置 `SERVER_PORT=8080` 来指定端口号为 8080。
4. 配置文件:Spring Boot 支持多种类型的配置文件,包括 properties 文件和 YAML 文件。默认情况下,Spring Boot 会加载 `application.properties` 或 `application.yml` 文件中的属性。可以通过在配置文件中使用 `spring.config.name` 和 `spring.config.location` 属性来指定其他的配置文件名称和位置。
5. 配置类:可以通过编写一个带有 `@Configuration` 注解的类来定义配置属性。可以使用 `@Value` 注解来注入属性值,也可以使用 `@ConfigurationProperties` 注解来绑定一组相关的属性。
6. 默认属性:Spring Boot 提供了一些默认的属性,可以在应用程序中直接使用。例如,`server.port` 默认为 8080。
springboot yml配置优先级
Spring Boot的YAML配置文件有多个级别的优先级,按照优先级从高到低的顺序如下:
1. 命令行参数:可以通过命令行参数来覆盖配置文件中的属性值。例如,使用`--server.port=8080`来指定端口号为8080。
2. 系统环境变量:可以通过设置系统环境变量来覆盖配置文件中的属性值。例如,设置`SERVER_PORT=8080`来指定端口号为8080。
3. 外部配置文件:可以通过在应用程序所在目录下的`config/`目录或者类路径下的`config/`目录中添加一个`application.properties`或`application.yml`文件来提供外部配置。这些外部配置文件会覆盖内部的默认配置。
4. 内部默认配置:Spring Boot内置了一些默认的配置属性,可以在应用程序中直接使用。这些默认配置可以在Spring Boot的官方文档中找到。
5. 代码中的默认值:在代码中可以为属性设置默认值,当没有在配置文件中指定该属性时,将使用代码中设置的默认值。
总结起来,命令行参数和系统环境变量具有最高的优先级,可以直接覆盖配置文件中的属性值。外部配置文件和内部默认配置具有较低的优先级,而代码中的默认值是最低优先级的。