springboot系列四 profile 多環境配置

咱們在開發中和上線後的一些配置參數不通,如:數據庫鏈接、短信驗證等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

姓名:開發-哈哈, 地址:杭州市西湖區
相關文章
相關標籤/搜索