成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一文掌握 Spring Boot Profiles

Eidesen / 2043人閱讀

摘要:需要注意的是必須要使用版本為以上才支持屬性。與格式文件不同,正對(duì)不同的,無法在一個(gè)文件設(shè)置,官方采用命名形式為格式來達(dá)成一樣的效果。采用方式添加的是屬于額外激活的,也就是說覆蓋掉外部傳入的指定的。

Spring Boot Profiles 簡(jiǎn)介

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

那么什么又是 Spring Profiles,為什么需要它呢?我們先來看一個(gè)熟悉的場(chǎng)景:我們平常項(xiàng)目開發(fā),經(jīng)常需要根據(jù)不同的環(huán)境進(jìn)行配置的修改,比如在本地開發(fā)會(huì)加載本機(jī)的配置和開發(fā)環(huán)境數(shù)據(jù)庫(kù),在測(cè)試服務(wù)器上部署時(shí)就需要加載測(cè)試環(huán)境配置和數(shù)據(jù)庫(kù),同樣地,當(dāng)項(xiàng)目發(fā)布生產(chǎn)環(huán)境時(shí)就需要設(shè)置為生產(chǎn)環(huán)境配置和數(shù)據(jù)庫(kù)。這樣一來,不同的環(huán)境部署都需要額外的處理來調(diào)整環(huán)境的配置,維護(hù)起來十分繁瑣,還容易出錯(cuò)。

為了解決不同環(huán)境需要的配置切換問題,Spring Profiles 提供了一種方式允許我們指定在特定環(huán)境下只加載對(duì)應(yīng)的程序配置,每一種環(huán)境配置對(duì)應(yīng)一個(gè) Profile,只有當(dāng)前 Profile 處于激活狀態(tài)時(shí),才會(huì)將該 Profile 所對(duì)應(yīng)的配置和 Bean 加載到 Spring 程序中。

Spring Profiles 就是針對(duì)應(yīng)用程序,不同環(huán)境需要不同配置加載的一種解決方案。

當(dāng)然 Spring 允許多個(gè) Profile 處于激活狀態(tài),比如將應(yīng)用配置進(jìn)行細(xì)分成數(shù)據(jù)庫(kù)配置,消息中間件配置,緩存配置等,都為各自在不同環(huán)境定義不同的 Profile 名稱,在需要激活環(huán)境對(duì)應(yīng)配置時(shí),指定多個(gè) Profile。

Spring Profiles 實(shí)戰(zhàn)

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

XML 配置定義 Profile

雖然現(xiàn)在 XML 配置方式使用越來越少,還是簡(jiǎn)單介紹下,通常我們?cè)?XML 文件定義的 Bean 時(shí)都有根元素 ,在 beans 元素上多了一個(gè)屬性 profile 可以指定環(huán)境,比如說把開發(fā)環(huán)境的 profile 定義為 dev,生產(chǎn)環(huán)境的 profile 為:prod。

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

Java API 方式,獲取當(dāng)前 Spring 容器的環(huán)境 Bean,設(shè)置 activeProfiles 屬性,然后啟動(dòng)容器

采用啟動(dòng)參數(shù)方式指定,固定格式:-Dspring.profiles.active=dev

注解 @Profiles 定義Profile

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

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

Spring Boot Profile 實(shí)戰(zhàn)

好了,現(xiàn)在我們?cè)賮砜聪略?Spring Boot 程序中如何使用 Profile。通常一個(gè) Spring Boot 程序的配置文件為 yml 或者 properties 格式,由于 yml 格式文件的結(jié)構(gòu)簡(jiǎn)潔已讀,備受官方推崇,我們可以看下如何在 application.yml 定義 Profile 和對(duì)應(yīng)的配置。

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

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

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

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

Spring Boot API 方式激活 Profile

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

SpringApplication.setAdditionalProfiles(…)

SpringApplicationBuilder.profiles(...)

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

總結(jié)

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

下篇文章將通過解讀源碼的方式具體講解 Spring Boot Profiles 實(shí)現(xiàn)原理,敬請(qǐng)關(guān)注期待。

示例代碼

本文示例代碼可以通過下面?zhèn)}庫(kù)地址獲?。?/p>

springboot-actions-profiles:https://github.com/wrcj12138a...

環(huán)境支持:

JDK 8

SpringBoot 2.1.6

Maven 3.6.0

參考資料

How to use profiles in Spring Boot Application:http://1t.click/yUj

Spring Boot Doc:http://1t.click/yUh

Spring Doc:http://1t.click/yUg

全面解讀 Spring Profile 的用法:https://mp.weixin.qq.com/s/0i...

推薦閱讀

如何優(yōu)雅關(guān)閉 Spring Boot 應(yīng)用

需要接口管理的你了解一下?

Java 之 Lombok 必知必會(huì)

Java 微服務(wù)新生代之 Nacos

掌握設(shè)計(jì)模式之適配器模式

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75694.html

相關(guān)文章

  • 源碼解讀 Spring Boot Profiles

    摘要:有了配置文件之后,啟動(dòng)程序,我們首先可以看到日志輸入,由此可以看出程序讀取了的配置。首先,根據(jù)的全局查找功能,直接搜索這些詞出現(xiàn)的位置,進(jìn)行定位,可以找到這個(gè)日志出現(xiàn)于方法之中。由于我們的配置文件在下,所以只要留意當(dāng)為的程序執(zhí)行情況即可。 前言 上文《一文掌握 Spring Boot Profiles》 是對(duì) Spring Boot Profiles 的介紹和使用,因此本文將從源碼角度...

    Dionysus_go 評(píng)論0 收藏0
  • 一起來學(xué)SpringBoot | 第二篇:SpringBoot配置詳解

    摘要:如何測(cè)試進(jìn)入到項(xiàng)目目錄,此處以我本地目錄為主然后打開程序,不會(huì)在當(dāng)前目錄打開的請(qǐng)自行百度,輸入打包完畢后進(jìn)入到目錄中去,我們可以發(fā)現(xiàn)一個(gè)名為的包接著在打開程序,輸入。 SpringBoot 是為了簡(jiǎn)化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可以輕易的搭建出...

    leap_frog 評(píng)論0 收藏0
  • Maven profile整合Spring profile

    摘要:此時(shí)可以嘗試或命令打包,安裝包內(nèi)的文件中占位符已被替換。整合原理項(xiàng)目中一般都會(huì)加上可以查看的文件,里面包含定義的值是這樣插件會(huì)將或文件中的替換為中對(duì)應(yīng)的值。 在Maven和Spring中,都有profile這個(gè)概念。profile是用于區(qū)分各種環(huán)境的,例如開發(fā)環(huán)境、測(cè)試環(huán)境、正式環(huán)境等。Maven的profile用于在打包時(shí)根據(jù)指定環(huán)境替換不同環(huán)境的配置文件配置,如數(shù)據(jù)庫(kù)配置。Spri...

    用戶84 評(píng)論0 收藏0
  • Spring Cloud Alibaba基礎(chǔ)教程:Nacos配置的多環(huán)境管理

    摘要:第二步在應(yīng)用的配置文件中,增加環(huán)境配置第三步啟動(dòng)應(yīng)用,我們可以看到日志中打印了,加載的配置文件使用實(shí)現(xiàn)在中是用來對(duì)做集合管理的重要概念。深入思考上面我們分別利用配置管理功能中的幾個(gè)不同緯度來實(shí)現(xiàn)多環(huán)境的配置管理。 前情回顧: 《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)》 《Spring Cloud Alibaba基礎(chǔ)教程:支持的幾種服務(wù)消費(fèi)方...

    CNZPH 評(píng)論0 收藏0
  • Spring Boot 框架介紹和使用

    摘要:使用還是,根據(jù)個(gè)人喜好即可。如果錯(cuò)誤頁面也需要使用模板引擎動(dòng)態(tài)生成,那么放在下面的路徑。數(shù)據(jù)庫(kù)自動(dòng)配置嵌入式數(shù)據(jù)庫(kù)如果類路徑中包含或的相應(yīng)包,那么就會(huì)自動(dòng)配置這些嵌入式數(shù)據(jù)庫(kù)的實(shí)例和數(shù)據(jù)源。 本文參考自Spring Boot文檔。 Spring Boot 簡(jiǎn)介 Spring框架功能很強(qiáng)大,但是就算是一個(gè)很簡(jiǎn)單的項(xiàng)目,我們也要配置很多東西。因此就有了Spring Boot框架,它的作用很...

    Zack 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<