咱们在开发中和上线后的一些配置参数不通,如:数据库链接、短信验证等java
springboot为咱们提供了区分环境配置的方法spring
同一个配置文件application.yml
中可使用---
3个杠来区分环境数据库
server: port: 8080 spring: profiles: active: dev #默认启动的环境 # 开发环境配置 --- spring: profiles: dev myconf: user: name: 开发-哈哈 # 生产环境配置 --- spring: profiles: prod myconf: user: name: 生产-嘿嘿嘿
启动类:springboot
@SpringBootApplication @RestController public class ProfileApp { @Value("${myconf.user.name}") private String userName; public static void main(String[] args) { SpringApplication.run(ProfileApp.class, args); } @GetMapping("/name") public String getUserName(){ return userName; } }
启动项目后,查看日志:app
2018-11-23 16:59:53.131 INFO 90732 --- [ restartedMain] com.yimingkeji.profile.ProfileApp : The following profiles are active: dev #当前的profile是dev
访问 http://localhost:8080/namerest
开发-哈哈
若是修改启动环境为 prod日志
spring: profiles: active: prod
启动后再次访问 http://localhost:8080/namecode
生产-嘿嘿嘿
还能够添加配置文件,以application-环境
来命名,如server
application.yml #默认配置 application-dev.yml # 开发环境配置 application-prod.yml # 生产环境配置
application.yml接口
server: port: 8080 spring: profiles: active: dev #默认启动的环境
application-dev.yml
myconf: user: address: 杭州市西湖区
application-prod.yml
myconf: user: address: 北京北京
接口:
@Value("${myconf.user.address}") private String address; @GetMapping("/address") public String getAddress(){ return address; }
先设置启动环境为dev,启动后访问 http://localhost:8080/address
杭州市西湖区
设置环境为prod
北京北京
固然,这2种方式能够配合使用。在application.yml
中保留以前的配置:
# 开发环境配置 --- spring: profiles: dev myconf: user: name: 开发-哈哈 # 生产环境配置 --- spring: profiles: prod myconf: user: name: 生产-嘿嘿嘿
修改接口:
@Value("${myconf.user.name}") private String userName; @Value("${myconf.user.address}") private String address; @GetMapping("/user") public String user(){ return "姓名:" + userName + ", 地址:" + address; }
环境dev,访问 http://localhost:8080/user
姓名:开发-哈哈, 地址:杭州市西湖区