亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot Profiles的原理和作用是什么

發布時間:2021-07-08 17:47:21 來源:億速云 閱讀:444 作者:chen 欄目:大數據

本篇內容主要講解“Spring Boot Profiles的原理和作用是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring Boot Profiles的原理和作用是什么”吧!

Spring Boot Profiles 簡介

Profile 的概念其實很早在 Spring Framework 就有了,在 Spring Framework 3.1 版本引入了注解 @ProfileEnvironment 環境配置的抽象,只是在 Spring Boot 框架里再進一步將 Profiles 功能進行擴展,使它也成為了 Spring Boot 特性之一,為此單獨在 官方文檔 25. Profiles 一節里介紹,文檔里把 Spring Boot Profiles 也叫做 Spring Profiles。

那么什么又是 Spring Profiles,為什么需要它呢?我們先來看一個熟悉的場景:我們平常項目開發,經常需要根據不同的環境進行配置的修改,比如在本地開發會加載本機的配置和開發環境數據庫,在測試服務器上部署時就需要加載測試環境配置和數據庫,同樣地,當項目發布生產環境時就需要設置為生產環境配置和數據庫。這樣一來,不同的環境部署都需要額外的處理來調整環境的配置,維護起來十分繁瑣,還容易出錯。

為了解決不同環境需要的配置切換問題,Spring Profiles 提供了一種方式允許我們指定在特定環境下只加載對應的程序配置,每一種環境配置對應一個 Profile,只有當前 Profile 處于激活狀態時,才會將該 Profile 所對應的配置和 Bean 加載到 Spring 程序中。

Spring Profiles 就是針對應用程序,不同環境需要不同配置加載的一種解決方案。

當然 Spring 允許多個 Profile 處于激活狀態,比如將應用配置進行細分成數據庫配置,消息中間件配置,緩存配置等,都為各自在不同環境定義不同的 Profile 名稱,在需要激活環境對應配置時,指定多個 Profile。

Spring Profiles 實戰

在 Spring 程序中有兩種方式使用 Profiles:XML 配置和注解 @Profile

XML 配置定義 Profile

雖然現在 XML 配置方式使用越來越少,還是簡單介紹下,通常我們在 XML 文件定義的 Bean 時都有根元素 <beans>,在 beans 元素上多了一個屬性 profile 可以指定環境,比如說把開發環境的 profile 定義為 dev,生產環境的 profile 為:prod。

Spring Boot Profiles的原理和作用是什么

需要注意的是:必須要使用 Spring XML Beans Schema 版本為 4.0 以上才支持 profile 屬性。在 XML 文件定義之后我們只需要激活指定的 Profile 名稱就可以加載對應的 Bean 對象了,在 Spring 程序中激活的方式主要兩種:

  • Java API 方式,獲取當前 Spring 容器的環境 Bean,設置 activeProfiles 屬性,然后啟動容器

    Spring Boot Profiles的原理和作用是什么

  • 采用啟動參數方式指定,固定格式:-Dspring.profiles.active=dev

注解 @Profiles 定義Profile

使用注解定義 Profile 也比較簡單,引入一個新的注解 @Profiles,通常 @Profiles 配合 @Component 或者 @Configuration 使用,如下示例:

Spring Boot Profiles的原理和作用是什么

激活 Profile 的方式都是一樣的,只要指定 Profile 被激活,其對應的 Bean 才會加載。在 Spring 程序中 Profile 默認為 default,當前我們可以通過 spring.profiles.default 配置方式或者 org.springframework.core.env.AbstractEnvironment#setDefaultProfiles API 方式修改。

Spring Boot Profile 實戰

好了,現在我們再來看下在 Spring Boot 程序中如何使用 Profile。通常一個 Spring Boot 程序的配置文件為 yml 或者 properties 格式,由于 yml 格式文件的結構簡潔已讀,備受官方推崇,我們可以看下如何在 application.yml 定義 Profile 和對應的配置。

Spring Boot Profiles的原理和作用是什么

與yml格式文件不同,正對不同的 Profile,無法在一個 properties 文件設置,官方采用命名形式為 applications-${profile}.properties 格式來達成一樣的效果。為了看到指定 Profile 激活后的效果,我們可以通過下方的一個例子實踐下,通過激活不同 Profile 啟動程序,來請求 /enviroment 接口來獲取當前的環境配置變量。

Spring Boot Profiles的原理和作用是什么

這里我們介紹如何在配置文件中激活 Profile 的方式:在 application.yml 頂部添加如下配置,表明當前所激活的 Profile 為 prod,當然也可以前文介紹的啟動參數方式激活:

Spring Boot Profiles的原理和作用是什么

然后啟動程序,curl 方式訪問 http://localhost:9000/enviroment 可以得到如下輸出結果:

Spring Boot Profiles的原理和作用是什么

同樣如果上述的 active 屬性值指定為 dev,將輸出內容: current app enviroment is prod

Spring Boot API 方式激活 Profile

在 Spring Boot 程序除了上述的方法來激活 Profile 外,還可以使用 Spring Boot API 方式激活:

  • SpringApplication.setAdditionalProfiles(…)

    Spring Boot Profiles的原理和作用是什么

  • SpringApplicationBuilder.profiles(...)

    Spring Boot Profiles的原理和作用是什么

但需要注意的是使用 Spring Boot API 的話需要在程序啟動前設置,也就是 SpringApplication.run(...) 方法執行前,否則沒有效果。 采用 Spring Boot API 方式添加的Profile 是屬于額外激活的 Profile,也就是說覆蓋掉外部傳入的 spring.profiles.activie 指定的 Profile。

總結

在Spring Boot 程序中,我們通常定義不同 Profiles 的配置文件,如 application-{profile}.properties,在默認配置文件 application.properties 中設置 spring.profiles.active=dev ,用于平常開發使用,當需要打包上傳服務器時,通過啟動參數方式 jar -Dspring.profiles.active=prod xxx.jar 指定對應環境的 Profile 啟動程序來加載對應環境的配置,到這里我們學習如何通過 Spring Boot Profiles 特性來應對程序中不同環境配置的切換,希望對工作中的小伙伴有所幫助,也歡迎小伙伴留言分享應對項目環境配置區分加載的實踐心得。若有錯誤或者不當之處,還請大家批評指正,一起學習交流。

示例代碼

本文示例代碼可以通過下面倉庫地址獲取:

  • springboot-actions-profiles:https://github.com/wrcj12138aaa/springboot-actions-profiles

環境支持:

  • JDK 8

  • SpringBoot 2.1.6

  • Maven 3.6.0

到此,相信大家對“Spring Boot Profiles的原理和作用是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马公市| 红原县| 兴国县| 肥西县| 颍上县| 黄大仙区| 姚安县| 常德市| 汤原县| 淳化县| 连城县| 克拉玛依市| 崇阳县| 阿拉尔市| 双峰县| 高雄县| 石林| 徐水县| 曲沃县| 长治市| 万载县| 岳阳县| 德兴市| 隆安县| 山东省| 台安县| 吐鲁番市| 玉门市| 防城港市| 嘉定区| 石景山区| 商南县| 武冈市| 永春县| 资讯| 商丘市| 平凉市| 龙口市| 荥经县| 吴桥县| 武城县|