概要
開発者としてソフトウェアを作成して実際にデリバリーしていると開発環境なのか本番環境なのかローカル環境なのかによってパラメータを変えたいときってありますよね。
特に利用するのが、データベースの接続先情報や外部連携先の開発環境・本番環境のURLの切り替える必要があるというのが私の経験ではよくありました。
そんなときに、実際に動作する環境に応じてプロファイルを変更するという手段を取るのは普通なことかなと思います。
Spring Boot ならapplication.property ファイルがあると思いますが、application-it.property ファイルを作成しておいて、ACTIVE プロファイルを it で指定すれば動作しましたね。
今回は、Quarkus で ACTIVE プロファイルを変更する方法を試していこうと思います。
application.property の設定
とりあえずデモの為に次のように application.property を作成します。
書き方として、左辺が key, 右辺が value になります。 # はコメントアウトで、%はコメントアウトと思われがちですが、
これが Active プロファイルによって切り替わるよというものになります。
# Configration file
# key = value
test=test
%it.test=it-test
%st.test=st-test
%pr.test=pr-test
ここでは、test という変数名を定義しています。test=test はデフォルトの設定になります。%で指定されている it.test, st.test, pr.test というのは 指定された Active プロファイルに応じて使用されます。
挙動確認
とりあえず動作確認する為に以下のコントローラーを作成します。
@Path("/hello")
public class ApplicationPropertyTestController {
@ConfigProperty(name = "test")
private String test;
@GET
@Produces(MediaType.TEXT_PLAIN)
public void hello() {
System.out.println(test);
}
}
プロダクトコード内では、フィールドに @ConfigProperty アノテーションを付与します。そしてその中で、name = “test” を参照するように指定しておきます。
この設定をすることで、プロパティファイル内の key が test であるものを探してきて、value を取得して String test に代入してくれます。
この Controller では、/hello という path で GET でアクセスすると、標準出力で test に格納してある値が出てくる仕組みになっています。
この状態で、通常の起動方法で起動しましょう。
mvn compile quarkus:dev
起動したら、別ターミナルを開いて curl を投げてみよう。
curl http://localhost:8080/hello
すると、次のような結果になります。
一番下の行に test と出力されたのがわかると思います。
また、起動時に上から6行目くらいに、 Profile dev activated と書かれていると思います。ここでも、どのプロファイルが指定されているかがわかると思います。これはデフォルト設定になります。
Active プロファイルを変更してみる
では、次に Active プロファイルを it に設定して起動してみましょう。起動方法は以下です。
mvn compile quarkus:dev -Dquarkus.profile=it
-Dquarkus.profile=it で指定したことになります。
起動したら、ふたたび curl を投げてみよう。
curl http://localhost:8080/hello
すると、次のような結果になると思います。
一番下の行に it-test と出力されたのがわかると思います。
また、起動時に上から6行目くらいに、 Profile it activated と書かれていると思います。
まとめ
こんな感じに Quarkus の Active プロファイルを指定することができます!結論、起動時に次のコマンドを指定するだけで切り替えることができました!Spring Boot と違って一つの application.property で収まるのわかりやすいですね!
-Dquarkus.profile=it
今回は、Quarkus の起動プロファイルを切り替える方法を紹介しました!以上です。
コメント