第7章 プロパティー式
プロパティー式は、設定内のプロパティーの値を置き換えるために使用できるプロパティー参照とプレーンテキスト文字列の組み合わせになります。
変数と同様に、Quarkus でプロパティー式を使用して、設定プロパティーの値をハードコーディングする代わりに置き換えることができます。プロパティー式は、java.util.Properties
がアプリケーションの設定ソースからプロパティーの値を読み取ると解決されます。
これは、コンパイル時に設定プロパティーが設定から読み取られる場合に、プロパティー式もコンパイル時に解決されることを意味します。設定プロパティーがランタイム時にオーバーライドされる場合、その値はランタイム時に解決されます。
プロパティー式は、複数の設定ソースを使用して解決できます。これは、ある設定ソースで定義されているプロパティーの値を使用して、別の設定ソースで使用するプロパティー式を拡張できることを意味します。
式のプロパティーの値を解決できず、式のデフォルト値を設定しない場合は、アプリケーションで NoSuchElementException
が発生します。
7.1. プロパティー式の使用例
このセクションでは、Quarkus アプリケーションを設定する際に、プロパティー式を使用して柔軟性を高める方法の例を紹介します。
設定プロパティーの値の置き換え:
プロパティー式を使用して、設定でプロパティー値のハードコーディングを回避できます。以下の例のように、
${<property_name>}
構文を使用して、設定プロパティーを参照する式を作成します。application.properties
remote.host=quarkus.io callable.url=https://${remote.host}/
callable.url
プロパティーの値はhttps://quarkus.io/
に解決されます。特定の設定プロファイルに固有のプロパティー値の設定:
以下の例では、
%dev
設定プロファイルとデフォルトの設定プロファイルは、異なるホストアドレスでデータソース接続 URL を使用するように設定されます。アプリケーションを起動する設定プロファイルに応じて、データソースドライバーは、プロファイルに設定したデータベース URL を使用します。application.properties
%dev.quarkus.datasource.jdbc.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false quarkus.datasource.jdbc.url=jdbc:mysql://remotehost:3306/mydatabase?useSSL=false
設定プロファイルごとにカスタム
application.server
プロパティーの異なる値を設定することにより、同じ結果を簡単な方法で実現できます。次に、例に示すように、アプリケーションのデータベース接続 URL でプロパティーを参照できます。application.properties
%dev.application.server=localhost application.server=remotehost quarkus.datasource.jdbc.url=jdbc:mysql://${application.server}:3306/mydatabase?useSSL=false
application.server
プロパティーは、アプリケーションの実行時に選択するプロファイルに応じて適切な値に解決されます。プロパティー式のデフォルト値の設定:
プロパティー式のデフォルト値を定義できます。Quarkus は、式を展開するために必要なプロパティーの値が設定ソースのいずれからも解決されない場合に、デフォルト値を使用します。次の構文を使用して、式のデフォルト値を設定できます。
${<expression>:<default_value>}
以下の例では、データソース URL のプロパティー式は、
application.server
プロパティーのデフォルト値としてmysql.db.server
を使用します。application.properties
quarkus.datasource.jdbc.url=jdbc:mysql://${application.server:mysql.db.server}:3306/mydatabase?useSSL=false
プロパティー式のネスト化:
プロパティー式を別のプロパティー式内にネスト化することで、プロパティー式を作成できます。ネスト化されたプロパティー式が展開されると、内部の式が最初に展開されます。
${<outer_property_expression>${<inner_property_expression>}}
複数のプロパティー式:
以下に示すように、2 つ以上のプロパティー式を結合することができます。
${<first_property>}${<second_property>}
プロパティー式と環境変数の組み合わせ:
プロパティー式を使用して、環境変数の値を置き換えることができます。以下の例の式は、
HOST
環境変数に設定される値をapplication.host
プロパティーの値として置き換えます。HOST
環境変数が設定されていない場合、application.host
はremote.host
プロパティーの値をデフォルトとして使用します。application.properties
remote.host=quarkus.io application.host=${HOST:${remote.host}}