Spring Boot 不仅可以通过配置文件进行配置,还可以通过环境变量、命令行参数等多种形式进行配置。这些配置都可以让开发人员在不修改任何代码的前提下,直接将一套 Spring Boot 应用程序在不同的环境中运行。
以下是常用的 Spring Boot 配置形式及其加载顺序(优先级由高到低):
以上所有形式的配置都会被加载,当存在相同配置内容时,高优先级的配置会覆盖低优先级的配置;存在不同的配置内容时,高优先级和低优先级的配置内容取并集,共同生效,形成互补配置。
Spring Boot 中的所有配置,都可以通过命令行参数进行指定,其配置形式如下。
java -jar {Jar文件名} --{参数1}={参数值1} --{参数2}={参数值2}
示例 1
在 springbootdemo 项目启动时,使用以下命令。
java -jar springbootdemo-0.0.1-SNAPSHOT.jar --server.port=8081 --server.servlet.context-path=/bcb
命令行参数说明如下:
Spring Boot 启动时,会自动加载 JAR 包内部及 JAR 包所在目录指定位置的配置文件(Properties 文件、YAML 文件),下图中展示了 Spring Boot 自动加载的配置文件的位置及其加载顺序,同一位置下,Properties 文件优先级高于 YAML 文件。
图 2 说明如下:
这些配置文件的优先级顺序,遵循以下规则:
示例 2
创建一个名为 mybootdemo 的 Spring Boot 项目,并在src/main/resoources下创建以下4个配置文件。
application.yml:默认配置
application-dev.yml:开发环境配置
application-test.yml:测试环境配置
application-prod.yml:生产环境配置
1)在 applcation.yml 文件中,指定默认服务端口号(port)为 “8080”,上下文路径(context-path)为“/mybootdemo”,并激活开发环境(dev)的 profile。
server:
port: 8080 #端口号
servlet:
context-path: /mybootdemo #上下文路径或项目访问路径
spring:
profiles:
active: dev #激活开发环境配置
2)在 application-dev.yml 中,指定开发环境端口号为 “8081”,上下文路径为“/in-dev”,配置如下。
server:
port: 8081 #开发环境端口号 8081
servlet:
context-path: /in-dev #开发环境上下文路径为 in-dev
spring:
config:
activate:
on-profile: dev #开发环境
3)在 application-test.yml 中,指定测试环境端口号为 “8082”,上下文路径为“/in-test”,配置如下。
#测试环境配置
server:
port: 8082 #测试环境端口 8082
servlet:
context-path: /in-test #测试环境上下文路径 /in-test
spring:
config:
activate:
on-profile: test
4)在 application-prod.yml 中,指定生产环境端口号为 “8083”,上下文路径为“/in-prod”,配置如下。
#生产环境配置
server:
port: 8083 #端口号
servlet:
context-path: /in-prod #上下文路径
spring:
config:
activate:
on-profile: prod
1、执行以下 mvn 命令,将 mybootdemo 打包成 JAR,并将该 JAR 包移动到本次磁盘的某个目录下(例如 mySpringBoot 目录)。
mvn clean package
2、在 JAR 包所在目录下创建 application.yml ,并设置上下文路径为“/out-default”,并激活生产环境(prod)Profile。
#JAR 包外默认配置
server:
servlet:
context-path: /out-default
#切换配置
spring:
profiles:
active: prod #激活开发环境配置
2、打开命令行窗口,跳转到 mySpringBoot 目录下,执行以下命令启动 Spring Boot。
java -jar mybootdemo-0.0.1-SNAPSHOT.jar
启动结果如下图。
示例分析
加入
QQ群:722461036
微信群:
一起督促、学习、练习、温习、复习 ~ ~ ~