創(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)境中才知道。
- 系統(tǒng)屬性
- 環(huán)境變量
- 名為的環(huán)境文件.env放置在當(dāng)前工作目錄中
- 放置在其中的配置文件 $PWD/config/application.properties