Bootのアプリケーションで環境ごとにプロファイルを切り替える方法スポンサーリンクこんにちは!ぐち(@bloguchi)です。ネットで検索するとapplication.propertiesの設定やjavaコマンドでの起動時に環境変数を設定する方法はたくさんあったのですが、僕がやりたかったのは、warファイルをサーバのTomcat配下にデプロイし、サーバ側で静的に定義した値でプロファイルを切り替えたかったのです。それでは早速、その方法をご紹介します。bootのプロジェクトはデフォルトではapplication.ymlが作られていると思いますが、これらをサーバ側で設定するプロファイル名をつけた形で複数用意します。僕はデフォルトとは別に、staging(ステージング環境)とproduction(本番環境)のプロファイルを準備しました。Bootのルールに従い、application-XXX.ymlとします。XXXの部分はプロファイル名です。application.ymlの中身application.ymlがデフォルトのプロファイルとなりますので、すべての設定値を記述します。そこから、application-XXX.ymlは環境ごとに差異のある設定値のみを記載していく感じです。こちらがapplication.ymlです。こちらがapplication-production.ymlです。ソースコードで設定値を取得するYMLファイルに記述した値を取得するために、EnvironmetnクラスをDIします。Bootでは@Autowiredを変数に記述すると該当するクラスからインスタンスを生成し変数に入れてくれる便利機能です。省略・・・}そして、設定値を取得したい場所で下記のように書きます。eivironment.getProperty("env.title");env.titleがapplication.ymlに記述した属性を指定しています。ドットでつなぐのはapplication.ymlのインデント階層です。スポンサードリンクスポンサーリンクサーバ側にプロファイル名を設定する最後にめちゃくちゃ大事な工程です。Bootで作成したアプリをwarファイルにして、別のアプリケーションサーバにデプロイする場合は、この設定を行わないと、いくらやってもプロファイル名が反映されません。これまでの手順はいくらやっても意味がないということになります。以下の設定例はTomcatの場合です。Tomcatのcontext.xmlに以下の内容を追記します。<Context>タグはあると思うので、その配下に追記してください。value="produciton"/></Context>このようにしておくと、Tomcatの起動時にproductionというプロファイル名が設定され、applicaiton.ymlに続いて、application-production.ymlが読み込まれて、設定値が有効となります。まとめ最近では何でもネットで検索すれば解決することが多くなっていますが、中にはヒットする数が少ない情報もあります。いった情報をアップデートし、公開することで少しでも多くの人の役に立てばいいですね。調べていた情報があり助かりました。ありがとうございます。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目ですCommentName*Email*Website上に表示された文字を入力してください。