第10章 YAML 設定サポートの追加
Red Hat ビルドの Quarkus は、Eclipse MicroProfile Config の SmallRye Config
実装により YAML 設定ファイルをサポートします。Quarkus Config YAML
エクステンションを追加し、プロパティーの代わりに YAML を使用して設定することができます。Quarkus は、YAML ファイルの名前に application.yml
と application.yaml
を使用することをサポートしています。
YAML 設定ファイルは、application.properties
ファイルよりも優先されます。推奨される方法は、application.properties
ファイルを削除し、エラーを回避するために 1 種類のみの設定ファイルを使用することです。
手順
以下の方法のいずれかを使用して、プロジェクトに YAML エクステンションを追加します。
pom.xml
ファイルを開き、quarkus-config-yaml
エクステンションを依存関係として追加します。<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-config-yaml</artifactId> </dependency>
コマンドラインから
quarkus-config-yaml
エクステンションを追加するには、プロジェクトディレクトリーから以下のコマンドを入力します。./mvnw quarkus:add-extension -Dextensions="quarkus-config-yaml"
10.1. YAML でのネストされたオブジェクト設定の使用
既存のクラス内でネストされたクラスを定義できます。以下の YAML 設定ファイルの例は、YAML 形式を使用して Quarkus アプリケーションでネストされたプロパティーを設定する方法を示しています。
前提条件
- YAML 設定ファイルを読み取ることができる既存の Quarkus プロジェクトがあること。
手順
開発モードで Quarkus を起動するには、Quarkus アプリケーションの
pom.xml
ファイルが含まれるディレクトリーで以下のコマンドを入力します。./mvnw quarkus:dev
- YAML 設定ファイルを開きます。
- 以下に示す構文のようなネストされたクラス設定を追加します。
# YAML supports comments quarkus: datasource: url: jdbc:postgresql://localhost:5432/some-database driver: org.postgresql.Driver username: quarkus password: quarkus # REST Client configuration property org: acme: restclient: CountriesService/mp-rest/url: https://restcountries.eu/rest # For configuration property names that use quotes, do not split the string inside the quotes. quarkus: log: category: "io.quarkus.category": level: INFO
10.2. YAML を使用したカスタム設定プロファイルの設定
Red Hat ビルドの Quarkus では、プロファイル依存の設定を作成し、必要に応じてそれらの設定の切り替えを行うことができます。以下の手順は、YAML を使用してプロファイル依存設定を提供する方法を示しています。
前提条件
- YAML 設定ファイルを読み取るように Quarkus プロジェクトが設定されていること。
手順
- YAML 設定ファイルを開きます。
プロファイル依存設定を設定するには、
”%profile”
構文を使用してキーと値のペアを定義する前にプロファイル名を追加します。以下の例では、Quarkus が開発モードで実行される際に、
jdbc:postgresql://localhost:5432/some-database
URL で PostgreSQL データベースが利用可能になるように設定されます。"%dev": quarkus: datasource: url: jdbc:postgresql://localhost:5432/some-database driver: org.postgresql.Driver username: quarkus password: quarkus
アプリケーションを停止した場合には、以下のコマンドを入力して再起動します。
./mvnw quarkus:dev
10.3. 設定キーの競合の管理
YAML などの構造化形式は、Configuration 名前空間の候補のサブセットのみをサポートします。以下の手順は、2 つの設定プロパティー (quarkus.http.cors
と quarkus.http.cors.methods
) における競合の解決方法を示しています。ここで、1 つのプロパティーはもう 1 つのプロパティーの接頭辞になります。
前提条件
- YAML 設定ファイルを読み取るように Quarkus プロジェクトが設定されていること。
手順
- YAML 設定ファイルを開きます。
YAML プロパティーを別のプロパティーの接頭辞として定義するには、以下の例に示すようにプロパティーの範囲にティルデ (
~
) を追加します。quarkus: http: cors: ~: true methods: GET,PUT,POST
開発モードで Quarkus アプリケーションをコンパイルするには、プロジェクトディレクトリーから以下のコマンドを入力します。
./mvnw quarkus:dev
注記YAML キーは設定プロパティー名のアセンブリーに含まれないため、任意のレベルの競合する設定キーに使用できます。