Spring boot相同配置属性优先级

在Spring Boot 中,可以通过 application.properties(或 application.yml)文件来配置应用的属性。此外,还可以通过使用命令行参数、操作系统环境变量和外部文件等方式覆盖 application.properties 中的属性值,例如使用 --spring.config.location 参数指定外部的配置文件。

对于 application.properties 和用户指定的配置文件,配置项相同时,优先级如下:

1. 命令行参数和操作系统环境变量的优先级最高,会覆盖其他的属性值。例如:

   java -jar myproject.jar --server.port=9090

   这里设置了 server.port 属性为 9090,会覆盖 application.properties 中配置的相同属性。

2. 在项目的外部文件中指定的配置文件优先于 application.properties,即当外部文件中和 application.properties 中同时存在相同的配置项时,以外部文件中的配置为准。例如:

   java -jar myproject.jar --spring.config.location=classpath:/custom/application.properties

   这里指定的配置文件路径为 classpath:/custom/application.properties,在此文件中指定的配置项将会覆盖 application.properties 中的相同配置项。

3. 配置文件中的属性值可以被环境变量所覆盖。此时,环境变量的名称需使用 SPRING_APPLICATION_JSON 作为前缀,并使用 JSON 格式来指定属性值。例如:

   export SPRING_APPLICATION_JSON='{"server.port":"9090"}'
   java -jar myproject.jar

 这里设置了 SPRING_APPLICATION_JSON 环境变量,将 server.port 属性设置为了 9090,会覆盖 application.properties 中配置的相同属性。

4. 在 application.properties 中配置的属性值优先级最低,也就是当其他方式均未指定相应的配置项时,会使用 application.properties 中指定的值。

注意:这里所说的“优先级”仅针对相同的配置项而言。对于不同的配置项,各自的优先级取决于其被读取的顺序以及使用的默认值等。

猜你喜欢

转载自blog.csdn.net/qq_28165595/article/details/131259701