springboot 的多配置环境配置
springboot 的多配置环境配置
一. 简述
多环境配置,这个东西无论在大厂小厂都是需要的,因为往往我们开发环境、测试环境、生产环境都不一样。数据库连接不说别的,起码 url
是不一样的。当然做法也有很多,可以通过 properties
,也可以通过 mvn
的配置以及 spring
的 profile
方式。 Github地址:https://github.com/WeidanLi/spring-boot-tutorial 演示项目:globle-profiles
二. 开发
1. mvn
依赖
1 | <dependencies> |
感觉这个 web-starter
就是万能的依赖,有了它什么东西都有了。
2. 编写不同 profile
的配置
共同的配置,类似于一个产量的名字啊等等均可以放在通用的配置里。 通用的配置取名是 application.yml
1 | common: |
现在我用一个开发,一个生产环境的常亮来演示: application-dev.yml
可以看到,后缀就是环境的名称:
1 | diff: |
application-prod.yml
:
1 | diff: |
3. 用于读取环境常亮的控制器
简单粗暴一点,直接使用 SPel
去读取到不同环境的变量然后注入到控制器中返回
1 |
|
4. 测试接口
分别以 dev
环境和 prod
环境来启动项目,分别读取不同的配置:
1 | GET http://localhost:8080 |
5. 修改 profile
的方式
- 启动时命令行传入
--spring.profiles.active=prod
(java -jar -Dspring.profiles.active=production demo-0.0.1-SNAPSHOT.jar
) - 通过修改
application.yml
的spring.profiles.active
- 设置系统变量
spring.profiles.active
- 操作系统环境变量
SPRING_PROFILES_ACTIVE
以上排序优先级从高到低,也就是说,如果在命令行输入了,那么下面的设置都会被覆盖掉。我们可以利用这个特性,去做一些定制化操作,例如默认是开发环境,只有运行在服务器的时候,通过命令修改环境(一般是通过 Jenkins
来启动项目)
三. 总结
profile
可以让我们很快的变更环境而不需要每次部署都去关心所需要修改的配置。