最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot?Profiles?多環(huán)境配置及切換

 更新時間:2021年12月08日 09:27:25   作者:萌貓他爸  
大部分情況下,我們開發(fā)的產品應用都會根據(jù)不同的目的,所以需要支持不同的環(huán)境,本文主要介紹了SpringBoot?Profiles?多環(huán)境配置及切換,感興趣的可以了解一下

前言

大部分情況下,我們開發(fā)的產品應用都會根據(jù)不同的目的,支持運行在不同的環(huán)境(Profile)下,比如:

  • 開發(fā)環(huán)境(dev)
  • 測試環(huán)境(test)
  • 預覽環(huán)境(pre)
  • 生產環(huán)境(prod)

這里的 環(huán)境 實際上是一個統(tǒng)稱,不同的環(huán)境可能代表著

  • 使用的域名、端口、實例數(shù)目是不同的;
  • 連接的數(shù)據(jù)庫地址、端口、名稱是不同的;
  • 使用的日志輸出格式、級別、保存時間是不同的;

以數(shù)據(jù)庫為例,應用在開發(fā)環(huán)境下運行時,連接的是開發(fā)環(huán)境對應的數(shù)據(jù)庫;應用在生產環(huán)境下運行時,連接的是生產環(huán)境對應的數(shù)據(jù)庫。

我們不是要為不同的運行環(huán)境開發(fā)多個不同的應用,而是要使應用可以運行在多個不同的環(huán)境中,怎么做到?

通過配置,更準備地說,是通過配置屬性。配置屬性本質就是鍵值對。

以數(shù)據(jù)庫為例,應用連接數(shù)據(jù)庫時,需要提供如下連接信息:

  • 地址
  • 端口
  • 名稱
  • 用戶名
  • 密碼

這些信息不會 硬編碼 到應用代碼中,而是以配置屬性(鍵值對)的形式存儲到配置文件中;應用運行時通過讀取該配置文件中的配置屬性,進而完成數(shù)據(jù)庫的連接。

應用 = 程序代碼 + 配置文件

這個配置文件中連接信息指向測試使用的數(shù)據(jù)庫,我們就說應用運行在測試環(huán)境;連接信息指向生產使用的數(shù)據(jù)庫,我們就說應用運行在生產環(huán)境;應用需要使用的其它服務(如:Redis、Kafka等)也是同樣的原理。

也說是說,我們可以通過為應用運行時指定不同的配置文件(不同的配置文件配置著不同的配置屬性),就可以使得應用可以運行在不同的環(huán)境中。SpringBoot 實際上也是通過類似的原理實現(xiàn)多環(huán)境的配置及切換的。

注:配置屬性可能有多種存儲方式,這里僅以配置文件為例。

默認環(huán)境配置

多環(huán)境配置及切換并不是每個應用所必須的,SpringBoot 也為我們考慮到了這一點,它提供了默認的配置文件和運行環(huán)境,即:如果沒有特別指定,SpringBoot 使用默認的配置文件,運行于默認環(huán)境中。

默認配置文件

SpringBoot 默認配置文件:application.yml,默認位于類路徑下。其中,application 代表 SpringBoot 配置文件名稱,yml 代表配置文件格式(后綴)。

默認配置文件實際也可以不提供,或者內容為空。這是為什么呢?

SpringBoot 是一個功能十分豐富的技術框架,自身內置了很多的配置屬性,用以控制 Spring 容器的初始化行為;同時,SpringBoot 也支持通過外置配置文件的方式引入其它的配置屬性,application.yml 就是會被 SpringBoot 默認加載的外置配置文件之一。

SpringBoot 配置屬性 = 內置配置屬性 + 外置配置文件屬性(application.yml)

如果 application.yml 不存在或者內容為空,SpringBoot 僅使用內置配置屬性初始化容器環(huán)境;如果 application.yml 存在且內容不為空,SpringBoot 使用內置配置屬性和 application.yml 配置屬性的合集初始化容器環(huán)境。

如果 application.yml 中的配置屬性名稱和內置屬性相同,那么這個配置屬性值最終以 application.yml 中的配置值為準(覆蓋)。相當于,application.yml 的配置文件屬性優(yōu)先級高于默認的內置屬性。

注:SpringBoot 也支持 properties 后綴的配置文件格式,本文以 yml 為例。

默認運行環(huán)境

SpringBoot 默認運行環(huán)境:default,default 為運行環(huán)境名稱。

默認運行環(huán)境的名稱是哪里來的呢?

如前文所述,SpringBoot 是有內置屬性的,默認的運行環(huán)境名稱即來自于內置屬性:

spring.profiles.active=default

也就是說,內置配置屬性 spring.profiles.active 指定 SpringBoot 的運行環(huán)境名稱為 default,我們可以將其指定為其它值,進行改變運行環(huán)境名稱。

多環(huán)境配置

因為 application.yml 配置屬性的優(yōu)先級高于默認的內置屬性,我們可以通過在 application.yml 中指定配置屬性 spring.profiles.active 的值為 dev,將 SpringBoot 運行環(huán)境的名稱修改為 dev:

application.yml

spring:
  profiles:
    active: dev

僅僅是修改運行環(huán)境名稱么?SpringBoot 幫我們做的還有更多,它會自動搜索名稱為 application-dev.yml 的配置文件并加載其中的配置屬性。

配置文件名稱是有固定模式的:

application-{profile}.yml

其中,{profile} 為我們通過配置屬性 spring.profiles.active 指定的運行環(huán)境名稱。

也就是說,如果我們指定運行環(huán)境名稱為 dev,SpringBoot 會為我們自動搜索加載配置文件名稱為 application-dev.yml 中的配置屬性;如果我們指定運行環(huán)境名稱為 test,SpringBoot 會為我們自動搜索加載配置文件名稱為 application-test.yml 中的配置屬性;其它運行環(huán)境名稱同理。

SpringBoot 配置屬性 = 內置屬性 + application.yml 配置屬性 + application-{profile}.yml 配置屬性

SpringBoot 配置屬性優(yōu)先級:application-{profile}.yml 配置屬性 > application.yml 配置屬性 > 內置屬性

也就是說,我們可以通過指定不同的運行環(huán)境名稱,以及相應名稱的配置文件,從而實現(xiàn)多環(huán)境之間的切換。

注:如果找不到相應環(huán)境(profile)的配置文件,則會忽略。

多環(huán)境切換

以開發(fā)環(huán)境(dev)、測試環(huán)境(test)、預覽環(huán)境(pre)、生產環(huán)境(prod)為例,我們可以預先在項目中創(chuàng)建相應環(huán)境的配置文件:

application-dev.yml
application-test.yml
application-pre.yml
application-prod.yml

每一個環(huán)境的配置文件中配置相應環(huán)境對應的屬性,如:數(shù)據(jù)庫連接信息等;然后在 application.yml 中通過指定配置屬性 spring.profiles.active 為不同的值實現(xiàn)多環(huán)境切換,如:

spring:
  profiles:
    active: prod

代表 SpringBoot 的運行環(huán)境名稱為 prod,它將會加載 application-prod.yml 中的配置屬性。

還可以在 SpringBoot 啟動時,通過命令行參數(shù)的方式指定配置屬性:

java -jar myproject.jar --spring.profiles.active=prod

SpringBoot 配置屬性優(yōu)先級:命令行參數(shù)配置屬性 > application-{profile}.yml 配置屬性 > application.yml 配置屬性 > 內置屬性

推薦的方式是通過 application.yml/spring.profiles.active 指定 SpringBoot 應用默認的運行環(huán)境,應用啟動時通過命令行參數(shù)指定具體的運行環(huán)境;如果啟用啟動時沒有指定,則應用使用默認的運行環(huán)境運行。

小結

SpringBoot 多環(huán)境配置及切換,本質就是通過預先設定好多個運行環(huán)境名稱及相應的配置文件;應用啟動時通過指定運行環(huán)境名稱,進而加載對應名稱的配置文件實現(xiàn)的。

實際使用時,我們還可以充分利用配置屬性加載的優(yōu)先級合理地規(guī)劃應用的配置屬性,比如:

  • 通用配置(與運行環(huán)境無關的)屬性可以放到 application.yml 中;
  • 運行環(huán)境(profile)相關的配置屬性可以放到相應的 application-{profile}.yml 中;
  • 啟動時需要臨時指定的配置屬性可以通過命令行參數(shù)設置;
  • 2 和 3 中配置屬性也可以放到 application.yml 中一份,作為默認配置。

到此這篇關于SpringBoot Profiles 多環(huán)境配置及切換的文章就介紹到這了,更多相關SpringBoot Profiles 多環(huán)境內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java使用OCR技術識別驗證碼實現(xiàn)自動化登陸方法

    Java使用OCR技術識別驗證碼實現(xiàn)自動化登陸方法

    在本篇文章里小編給大家分享的是關于Java 如何使用 OCR 技術識別驗證碼實現(xiàn)自動化登陸的相關知識點內容,需要的朋友們學習下。
    2019-08-08
  • spring boot 2整合swagger-ui過程解析

    spring boot 2整合swagger-ui過程解析

    這篇文章主要介紹了spring boot 2整合swagger-ui過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 一篇文章看懂Java異常處理

    一篇文章看懂Java異常處理

    異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的,這篇文章主要給大家介紹了關于Java異常處理的相關資料,需要的朋友可以參考下
    2021-11-11
  • Java 輸入多行字符串或者多個int數(shù)值的方法

    Java 輸入多行字符串或者多個int數(shù)值的方法

    今天小編就為大家分享一篇Java 輸入多行字符串或者多個int數(shù)值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java漢字轉拼音pinyin4j用法詳解

    Java漢字轉拼音pinyin4j用法詳解

    這篇文章主要介紹了Java漢字轉拼音pinyin4j用法詳解,需要的朋友可以參考下
    2020-02-02
  • SpringBoot使用@ResponseBody返回圖片的實現(xiàn)

    SpringBoot使用@ResponseBody返回圖片的實現(xiàn)

    這篇文章主要介紹了SpringBoot使用@ResponseBody返回圖片的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Eureka源碼閱讀Client啟動入口注冊續(xù)約及定時任務

    Eureka源碼閱讀Client啟動入口注冊續(xù)約及定時任務

    這篇文章主要為大家介紹了Eureka源碼閱讀Client啟動入口注冊續(xù)約及定時任務示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Linux centos7環(huán)境下jdk安裝教程

    Linux centos7環(huán)境下jdk安裝教程

    這篇文章主要為大家詳細介紹了Linux centos7環(huán)境下jdk的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 國內分布式框架Dubbo使用詳解

    國內分布式框架Dubbo使用詳解

    這篇文章主要為大家介紹了國內分布式框架Dubbo使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Java中基于maven實現(xiàn)zxing二維碼功能

    Java中基于maven實現(xiàn)zxing二維碼功能

    這篇文章主要介紹了Java中基于maven實現(xiàn)zxing二維碼功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02

最新評論

浦东新区| 淅川县| 彩票| 文登市| 赣榆县| 利辛县| 新和县| 西丰县| 静海县| 云浮市| 浪卡子县| 安新县| 英吉沙县| 策勒县| 临颍县| 克东县| 革吉县| 马山县| 日喀则市| 益阳市| 凤庆县| 邵武市| 永吉县| 华阴市| 湖北省| 舟山市| 仁寿县| 宁夏| 武山县| 五河县| 穆棱市| 县级市| 荔波县| 调兵山市| 盐源县| 壤塘县| 襄樊市| 亳州市| 沙湾县| 芮城县| 瓦房店市|