当项目上线时,可以指定上测试环境或生产环境,我们可以通过profile来做到这一点
profile是Spring对不同环境提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境。
1、多profile文件形式
格式 :application-{profile}.yml 例如: application-test.yml application-prod.yml
2、多profile文档块模式
3、激活方式
命令行 --spring.profiles.active=dev
配置文件 spring.profiles.active=dev
jvm参数 -D spring.profiles.active=dev
第一种方式,多profile文件的方式
比如我创建两个配置文件 一个是dev 一个是 test
dev设置端口
server:
port: 18889
test设置端口
server:
port: 18888
然后在启动项目的时候 我们制定使用哪个环境的配置文件
application.yml主配置文件中这么写
# profiles.active指定激活哪个环境的配置文件
spring:
profiles:
active: dev
这样我们在启动项目后 端口就会用dev配置文件中的端口了
如果我们用的yml文件作为配置文件的话有一种简单的写法,叫文档块 ---
server:
port: 8080
spring:
profiles:
active: test
---
server:
port: 8081
spring:
profiles: test
---
server:
port: 8082
spring:
profiles: prod
第二种方式:文档块
在我们主配置文件中 写三个文档块,就不用写三个配置文件了。然后指定active 使用哪个文档块的配置。
当我们光标放到某个文档块时 idea还会提示再哪个文档块中。
第三种:命令行方式
在运行项目的时候,设置启动参数 --spring.profiles.active=test 这种方式,在idea中 点击主入口类
在arguments中加入--spring.profiles.active=test参数。
当我们在启动项目的时候就会指定加载哪个环境的配置文件了
比如我们打完包了,交给运维上线启动服务的时候,可以指定参数。
java -jar *******.jar --spring.profiles.active=test
这样我们只需要将配置文件写好,至于上哪个环境我们就不用管了。
这种是配置文件我们来维护了,还有一种,配置文件我们都不用管,就是第四种
第四种:指定配置文件的路径来加载配置文件
这里我们需要了解一下spring boot加载配置文件的位置。
springboot 启动会扫描以下位置的application.properties或.yml文件
file: ./config/ 当前项目文件下的config
file: ./ 当前项目文件下
classpath:/config/ 当前项目 类目录的config
classpath:/ 当前项目 类目录的跟目录
以上是按照优先级从高到低的顺序加载的,高优先级会覆盖低优先级的配置。如果四个位置都有配置文件,spring-boot都会加载,会形成一种互补配置
我们也可以通过指定 spring.config.location 来改变默认配置。
spring.config.location
注意 这个配置不是写在yml 配置文件中的,即便是写了也不会生效。
比如 我们已经将项目打包了,我们运维可以通过命令行启动项目的时候,来指定配置文件的新位置,指定配置文件和默认加载的这些配置文件共同形成互补配置
java -jar *******.jar --spring.config.location=D:/server/application.yml
这个非常适用项目已经发布了,需要修改配置 这种场景。我们就不用开发来在改配置 重新打包 重新发布了,只要运维改改配置直接重启服务加载新配置就行了。