外部配置加载顺序

外部配置加载

  • Spring Boot 支持多种外部配置方式,如下所示,从上往下加载优先级由高到低,内容相同时覆盖,不相同时累加。
  1. 命令行参数
  2. 来自java:comp/env的JNDI属性
  3. 使用“spring.config.location改变默认的配置文件位置
  4. Java系统属性(System.getProperties())
  5. 操作系统环境变量
  6. RandomValuePropertySource配置的random.*属性值
  7. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  8. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  9. jar包外部的application.properties或application.yml(不带spring.profile)配置文件
  10. jar包内部的application.properties或application.yml(不带spring.profile)配置文件
  11. @Configuration注解类上的@PropertySource
  12. 通过SpringApplication.setDefaultProperties指定的默认属性

环境准备

外部配置加载顺序

外部配置加载顺序

外部配置加载顺序

外部配置加载顺序

外部配置加载顺序

命令行参数

  • 使用指令:java -jar xxxxx.jar --server.port=8082
  • 多个参数时,用空格隔开,如: java -jar coco-0.0.1-SNAPSHOT.jar --server.port=8082 --server.servlet./context-path=/coco

外部配置加载顺序

  • 修改端口同时指定上下文路径,这个参数优先级高于jar文件内部的配置文件

外部配置加载顺序

外部配置加载顺序

spring.config.location

  • 通过 spring.config.location 可以新的配置文件位置,自定义的外部配置文件优先级高于Jar文件内部的配置文件
  • 项目打包好以后,使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;
  • 新指定的配置文件和默认加载的这些配置文件共同起作用形成互补配置;
  • 格式:java -jar spring-boot-xxx.jar--spring.config.location=G:/application.properties
  • spring-boot-xxx.jar 是打包好的应用文件;G:/application.properties是新的配置文件路径
外部配置加载顺序

外部配置加载顺序

外部配置加载顺序

@ PropertySource

  1. @Configuration注解类上的@PropertySource
  2. 可以参考《@PropertySource 加载指定配置文件》