云原生-Quarkus配置應(yīng)用程序

創(chuàng)建配置文件

默認(rèn) Quarkus 讀取 application.properties. 用下列內(nèi)容編輯 src/main/resources/application.properties

# Your configuration properties
greeting.message = hello
greeting.name = quarkus

注入配置項

Quarkus 使用 MicroProfile Config 將配置注入到應(yīng)用懂算。 注入使用 @ConfigProperty 注解

@ConfigProperty(name = "greeting.message") 
String message;

注入配置時 可以使用 @Inject @ConfigProperty 或僅 @ConfigProperty 對于標(biāo)注了 @ConfigProperty 的成員, 注解 @Inject 不是必須的济炎, 這點與 MicroProfile Config 不一樣

編輯 org.acme.config.GreetingResource 并加入下列配置屬性:

@ConfigProperty(name = "greeting.message") 
String message;

@ConfigProperty(name = "greeting.suffix", defaultValue="!") 
String suffix;

@ConfigProperty(name = "greeting.name")
Optional<String> name; 
  • 如果沒有為屬性配置值,應(yīng)用會啟動失敗報錯 javax.enterprise.inject.spi.DeploymentException: No config value of type [class java.lang.String] exists for: greeting.message.
  • 如果沒有配置 greeting.suffix 的值會注入默認(rèn)值.
  • 可選屬性 - 如果沒有配置 greeting.name 值會注入 Optional.empty() .

修改 hello 方法使用注入的屬性:

@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
    return message + " " + name.orElse("world") + suffix;
}

一旦設(shè)置恩商,用下列方式檢查:

$ curl http://localhost:8080/greeting
hello quarkus!

注入多個相關(guān)配置值的替代方法返奉,還可以使用@io.quarkus.arc.config.ConfigProperties注釋將這些屬性組合在一起贝搁。

更新和測試

我們也需要相應(yīng)調(diào)整功能測試。 編輯 src/test/java/org/acme/config/GreetingResourceTest.java 文件修改方法 testHelloEndpoint 的內(nèi)容為:

package org.acme.config;

import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;

import static io.restassured.RestAssured.given;
import static org.hamcrest.CoreMatchers.is;

@QuarkusTest
public class GreetingResourceTest {

    @Test
    public void testHelloEndpoint() {
        given()
          .when().get("/greeting")
          .then()
             .statusCode(200)
             .body(is("hello quarkus!")); // Modified line
    }

}

打包并運行應(yīng)用程序

使用 ./mvnw compile quarkus:dev 運行應(yīng)用. 并用瀏覽器打開 http://localhost:8080/greeting.

修改配置文件后馬上就能看到變化芽偏。 你可以添加 greeting.suffix , 刪除其它屬性雷逆,修改值,等等污尉。

一般膀哲,應(yīng)用可以使用 ./mvnw clean package 打包并用 -runner.jar 文件來運行。 你也可以用 ./mvnw clean package -Pnative 生成原生執(zhí)行程序被碗。

編程訪問配置

可以通過編程方式訪問配置某宪。實現(xiàn)動態(tài)查找或從既不是CDI bean也不是JAX-RS資源的類中檢索配置的值可能很方便。

可以使用以下方式以編程方式訪問配置org.eclipse.microprofile.config.ConfigProvider.getConfig()

String databaseName = ConfigProvider.getConfig().getValue("database.name", String.class);
Optional<String> maybeDatabaseName = ConfigProvider.getConfig().getOptionalValue("database.name", String.class);

配置 Profiles

Quarkus支持配置配置文件的概念蛮放。這些允許您在同一文件中擁有多個配置值缩抡,并通過配置文件名稱在它們之間進行選擇。

語法為%{profile}.config.key=value包颁。例如瞻想,如果我有以下內(nèi)容:

quarkus.http.port=9090
%dev.quarkus.http.port=8181

然后,除非dev配置文件處于活動狀態(tài)娩嚼,否則Quarkus HTTP端口將為9090 蘑险,在這種情況下,它將為8181岳悟。

配置Quarkus

Quarkus本身是通過與應(yīng)用程序相同的機制配置的佃迄。Quarkus保留quarkus.名稱空間。例如在里面application.properties 設(shè)置HTTP服務(wù)器端口

屬性前綴quarkus.被有效地保留用于配置Quarkus本身贵少,因此quarkus.應(yīng)從未被用作前綴應(yīng)用程序?qū)S脤傩浴?/p>

Quarkus在構(gòu)建時進行大部分配置和引導(dǎo)呵俏,并且在構(gòu)建期間讀取并使用了一些配置屬性。這些屬性在構(gòu)建時固定的滔灶,無法在運行時進行更改普碎。始終需要重新打包應(yīng)用程序,以反映此類屬性的更改录平。

在構(gòu)建時固定的屬性用鎖定圖標(biāo)標(biāo)記()在所有配置選項的列表中麻车。

但是缀皱,某些擴展確實定義了在運行時可覆蓋的屬性。一個典型的例子是數(shù)據(jù)庫URL动猬,用戶名和密碼啤斗,僅在目標(biāo)環(huán)境中才知道。

  1. 系統(tǒng)屬性
  2. 環(huán)境變量
  3. 名為的環(huán)境文件.env放置在當(dāng)前工作目錄中
  4. 放置在其中的配置文件 $PWD/config/application.properties
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赁咙,一起剝皮案震驚了整個濱河市钮莲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌序目,老刑警劉巖臂痕,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伯襟,死亡現(xiàn)場離奇詭異猿涨,居然都是意外死亡,警方通過查閱死者的電腦和手機姆怪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門叛赚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稽揭,你說我怎么就攤上這事俺附。” “怎么了溪掀?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵事镣,是天一觀的道長。 經(jīng)常有香客問我揪胃,道長璃哟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任喊递,我火速辦了婚禮随闪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骚勘。我一直安慰自己铐伴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布俏讹。 她就那樣靜靜地躺著当宴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泽疆。 梳的紋絲不亂的頭發(fā)上户矢,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音于微,去河邊找鬼逗嫡。 笑死青自,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驱证。 我是一名探鬼主播延窜,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抹锄!你這毒婦竟也來了逆瑞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤伙单,失蹤者是張志新(化名)和其女友劉穎获高,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吻育,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡念秧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了布疼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摊趾。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖游两,靈堂內(nèi)的尸體忽然破棺而出砾层,到底是詐尸還是另有隱情,我是刑警寧澤贱案,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布肛炮,位于F島的核電站,受9級特大地震影響宝踪,放射性物質(zhì)發(fā)生泄漏侨糟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一肴沫、第九天 我趴在偏房一處隱蔽的房頂上張望粟害。 院中可真熱鬧,春花似錦颤芬、人聲如沸悲幅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汰具。三九已至,卻和暖如春菱魔,著一層夾襖步出監(jiān)牢的瞬間留荔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留聚蝶,地道東北人杰妓。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像碘勉,于是被迫代替她去往敵國和親巷挥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容