请说说SpringBoot配置的优先级
时间: 2023-06-05 15:07:34 浏览: 140
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. 命令行参数:可以通过命令行参数来覆盖配置文件中的属性值,例如:java -jar app.jar --server.port=808。
2. Java 系统属性:可以通过 Java 系统属性来覆盖配置文件中的属性值,例如:-Dserver.port=808。
3. 操作系统环境变量:可以通过操作系统环境变量来覆盖配置文件中的属性值,例如:export SERVER_PORT=808。
4. 配置文件:Spring Boot 支持多种格式的配置文件,如 application.properties、application.yml 等。其中,application.yml 的优先级高于 application.properties。
5. 默认值:如果以上所有方式都没有配置属性值,则使用默认值。
总之,Spring Boot 的配置文件优先级是非常灵活的,可以根据不同的需求进行配置。
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. 代码中的默认值:在代码中可以为属性设置默认值,当没有在配置文件中指定该属性时,将使用代码中设置的默认值。
总结起来,命令行参数和系统环境变量具有最高的优先级,可以直接覆盖配置文件中的属性值。外部配置文件和内部默认配置具有较低的优先级,而代码中的默认值是最低优先级的。
阅读全文