自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SpringBoot中根據(jù)環(huán)境加載不同的配置的方案

開發(fā) 架構(gòu)
我們的一個應(yīng)用,開發(fā)上線,需要一定的流程,比如需要先在測試環(huán)境中進行測試,測試環(huán)境中有它的一整套配置,如MySQL、Redis、MQ等。

[[413405]]

前言

我們的一個應(yīng)用,開發(fā)上線,需要一定的流程,比如需要先在測試環(huán)境中進行測試,測試環(huán)境中有它的一整套配置,如MySQL、Redis、MQ等。

測試環(huán)境測試完畢,我們會在預(yù)發(fā)環(huán)境再度測試,最后再上線,即線上環(huán)境。每個環(huán)境都有他們自己獨有的一套配置,而代碼邏輯都是一樣,就是環(huán)境配置不一樣而已。

如何低耦合地分離各個環(huán)境的配置,就是我們所追求的,下面闡述下SpringBoot中的方案。

方案

我寫了個demo,下面是它的代碼結(jié)構(gòu):

1.業(yè)務(wù)代碼

下面假定以下是業(yè)務(wù)代碼,主要就是從配置文件中讀取env的值,并返回出去:

  1. package com.example.configenv.controller; 
  2.  
  3. import org.springframework.beans.factory.annotation.Value; 
  4. import org.springframework.web.bind.annotation.GetMapping; 
  5. import org.springframework.web.bind.annotation.RequestMapping; 
  6. import org.springframework.web.bind.annotation.RestController; 
  7.  
  8. @RestController 
  9. @RequestMapping("/"
  10. public class EnvController { 
  11.  
  12.     @Value("${env}"
  13.     private String env; 
  14.  
  15.     @GetMapping("/env"
  16.     public String showEnvValue() { 
  17.         return env; 
  18.     } 
  19.  

2.配置文件

配置文件中,application.yml是一個主配置,即無論如何,都會被加載的,類似SSM時代的spring-config.xml。里邊的邏輯,就一個active,就是指定配置環(huán)境:

  1. spring: 
  2.   profiles: 
  3.     active: dev 

對應(yīng)其他其他環(huán)境的配置,它們有2個點,一個是環(huán)境名稱on-profile,一個對應(yīng)環(huán)境下的值env。

  1. SpringBoot中根據(jù)環(huán)境加載不同的配置的方案 
  2. 原創(chuàng)2021-07-26 17:31·IT小村 
  3. 前言 
  4.  
  5. 我們的一個應(yīng)用,開發(fā)上線,需要一定的流程,比如需要先在測試環(huán)境中進行測試,測試環(huán)境中有它的一整套配置,如MySQL、Redis、MQ等。 
  6.  
  7. 測試環(huán)境測試完畢,我們會在預(yù)發(fā)環(huán)境再度測試,最后再上線,即線上環(huán)境。每個環(huán)境都有他們自己獨有的一套配置,而代碼邏輯都是一樣,就是環(huán)境配置不一樣而已。 
  8.  
  9. 如何低耦合地分離各個環(huán)境的配置,就是我們所追求的,下面闡述下SpringBoot中的方案。 
  10.  
  11. 方案 
  12.  
  13. 我寫了個demo,下面是它的代碼結(jié)構(gòu): 
  14.  
  15. SpringBoot中根據(jù)環(huán)境加載不同的配置的方案 
  16.  
  17.  
  18. 1.業(yè)務(wù)代碼 
  19.  
  20. 下面假定以下是業(yè)務(wù)代碼,主要就是從配置文件中讀取env的值,并返回出去: 
  21.  
  22. package com.example.configenv.controller; 
  23.  
  24. import org.springframework.beans.factory.annotation.Value; 
  25. import org.springframework.web.bind.annotation.GetMapping; 
  26. import org.springframework.web.bind.annotation.RequestMapping; 
  27. import org.springframework.web.bind.annotation.RestController; 
  28.  
  29. @RestController 
  30. @RequestMapping("/"
  31. public class EnvController { 
  32.  
  33.     @Value("${env}"
  34.     private String env; 
  35.  
  36.     @GetMapping("/env"
  37.     public String showEnvValue() { 
  38.         return env; 
  39.     } 
  40.  
  41. 2.配置文件 
  42.  
  43. 配置文件中,application.yml是一個主配置,即無論如何,都會被加載的,類似SSM時代的spring-config.xml。里邊的邏輯,就一個active,就是指定配置環(huán)境: 
  44.  
  45. spring: 
  46.   profiles: 
  47.     active: dev 
  48. 對應(yīng)其他其他環(huán)境的配置,它們有2個點,一個是環(huán)境名稱on-profile,一個對應(yīng)環(huán)境下的值env。 
  49.  
  50. application-dev.yml 
  51.  
  52. spring: 
  53.   config: 
  54.     activate: 
  55.       on-profile: dev 
  56.  
  57. env: '測試環(huán)境' 

application-online.yml

  1. spring: 
  2.   config: 
  3.     activate: 
  4.       on-profile: pre 
  5.  
  6. env: '預(yù)發(fā)環(huán)境' 

application-online.yml

  1. spring: 
  2.   config: 
  3.     activate: 
  4.       on-profile: online 
  5.  
  6. env: '線上環(huán)境' 

3.驗證效果

當我的主配置文件為如下時,即指定環(huán)境為dev測試環(huán)境

  1. spring: 
  2.   profiles: 
  3.     active: dev 

http://localhost:8080/env

可以看到,加載的是application-dev.yml的配置

而當我的主配置文件是如下時,即加載的是online線上環(huán)境

  1. spring: 
  2.   profiles: 
  3.     active: online 

http://localhost:8080/env

可以看到,加載的是application-online.yml的配置。

其他

部署應(yīng)用的時候,我們只需要覆蓋application.yml即可,就可以在測試環(huán)境、預(yù)發(fā)環(huán)境、線上環(huán)境等環(huán)境,加載他們對應(yīng)的配置。

責任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2012-08-29 09:51:01

iPhone蘋果專利

2010-03-04 15:06:39

Python CGI環(huán)

2009-12-15 16:41:17

路由器設(shè)置

2009-12-17 16:47:01

Linux桌面環(huán)境

2021-09-13 10:31:02

Java原子

2024-04-23 14:13:38

開發(fā)配置文件

2020-07-15 10:00:45

springbootbeanJava

2009-07-01 10:12:40

JSP環(huán)境配置JSP引擎

2009-06-29 15:06:23

環(huán)境變量配置Java

2011-06-20 14:00:26

Qt qmake

2010-11-25 16:48:20

HadoopHbase

2022-03-23 07:31:34

SpringBoot加載配置

2010-07-21 15:07:30

telnet服務(wù)

2009-12-14 10:08:31

路由器配置

2010-03-12 17:23:38

Python腳本

2017-06-27 05:08:46

存儲虛擬化服務(wù)器

2010-03-30 15:54:27

Oracle date

2011-03-17 17:59:33

云環(huán)境中開發(fā)

2022-07-07 09:27:26

Syslinux加載程序

2021-04-22 07:43:24

后端技術(shù)SpringBootdevtools
點贊
收藏

51CTO技術(shù)棧公眾號