1.概要

spring boot不仅可以从工程的resource文件夹或者config文件夹下加载配置,还可以在以下位置加载配置:

  • 命令行参数
  • 来自java:comp/env的JNDI属性
  • Java系统属性(System.getProperties())
  • 操作系统环境变量
  • RandomValuePropertyResource配置的random.*属性值
  • jar包外部的application-{profile}.properties或application.yaml(带spring.profile)配置文件
  • jar包内部的application-{profile}.properties或application.yaml(带spring.profile)配置文件
  • jar包外部的application.properties或application.yaml(不带spring.profile)配置文件
  • jar包内部的application.properties或application.yaml(不带spring.profile)配置文件
  • @Configuration注解类上的@PropertySource
  • 通过SpringApplication.setDefaultProperties指定的默认属性

其中上述中的标红部分是我们需要重点掌握内容,从上向下优先级越来越低,高优先级的配置会覆盖低优先级的配置,高优先级的配置和低优先级的配置都会生效,形成互补配置;

2.示例

2.1命令行参数

以修改启动端口号为例,我们启动jar的同时可以指定启动的端口号为9909

 

 此时我们访问:

 如果想在启动的时候修改多个配置,中间用空格间隔即可,比如我们在修改端口的同时还想添加一个路径,就执行下面的这个命令:

java -jar spingboot01-1.0-SNAPSHOT.jar --server.port=9909 --server.servlet.context-path=/boot

其中:--server.port=9909用来修改端口号

   --server.servlet.context-path=/boot增加访问路径为/boot,此时我们想要执行结果如下:

 2.2jar包外和jar包内

记住加载原则:由 jar 包外向 jar 包内进行寻找,优先加载带 profile 的文件,在加载不带 profile 的文件;

 举例:比如我们此时想修改多个加载参数,我们可以单拉出一个配置文件放在和 jar 包的同级目录下:

 

 此时如果启动这个 jar  肯定端口号为8801,访问路径为 /boot。此时我们在 jar 所在的同级目录放置一个配置文件,端口号为8888,访问路径为/hai;

 

 此时启动这个 jar

 

 此时我们访问:http://localhost:8888/hai/hello