咱們在開發中和上線後的一些配置參數不通,如:數據庫鏈接、短信驗證等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
姓名:開發-哈哈, 地址:杭州市西湖區