SpringBoot外部化配置
外部化配置(Externalized Configuration)是指将应用的配置从代码中剥离出来,放在外部文件或环境中进行管理的一种机制。
通俗地说,就是你不需要在代码里写死配置信息(比如数据库账号、端口号、日志级别等),而是把这些配置信息放在配置文件、命令行、环境变量等外部载体里。这样,你可以在不修改源码的情况下,就改变应用行为。
SpringBoot的外部化配置方式,包括但不限于
1.application.properties或者yml或者yaml文件
2.系统环境变量
3.JVM参数
4.命令行参数(启动参数)
......
优先级
声明:测试版本为SpringBoot,各版本关于application.properties或者yaml或者yml的优先级可能有所变动
1.application.properties或者yml或者yaml文件优先级
说明:配置在SpringBoot项目的resources下的application.properties或者yaml或者yml这属于内部化配置,其实SpringBoot应用程序默认是先去找外部化配置.也就是说会先去找外部的application.properties或者yaml或者yml
1.1)内部化配置application的优先级别
此时的运行结果 也就是说application.properties的优先级最高
当resources下有config文件夹之后
运行结果 也就是说application.properties/yaml/yml 内部化时候 resources/config中的application.properties优先级最高
1.2).外部化配置application的优先级别
首先我保留内部化的所有application
开始运行项目
证明了外部化配置application.properties/yaml/yml优先级高于内部化配置
2.系统环境变量
这里以临时设置环境变量来证明,环境变量的优先级别高于外部配置的application.properties/yaml/yml
重新打开cmd窗口
证明环境变量优先级别高于外部application配置
3.JVM参数
执行结果
证明JVM参数优先级高于环境变量
4.命令行参数(注意命令行参数不同于JVM参数,启动参数)
执行结果
证明命令行参数执行优先级最高
注意
java -Dserver.port -jar demo.jar --server.port
1. JVM 参数必须以 -D
开始
2. JVM 参数必须写在 java
命令之后、-jar
之前
3. -jar
必须写在要启动的 .jar
文件之前
4. --命令行参数
必须写在 .jar
文件之后
优先级排名
1.命令行参数优先级最高
2.JVM参数优先级其次
3.环境变量
4.外部application.properties/yaml/yml
如何改变配置文件名字呢???
spring.config.location
spring.config.name 剩下自己参考