- @ConfigurationPropertiesで読み込む設定ファイルを外だしする
- 外だしした設定ファイルにアクセスして読み込む
事の発端は、業務アプリにSpringBootを使用していた時のこと。 設定値を変えるたびにWARをビルドし直す手間を省くため、当時は設定ファイルをWARの外に置き、Tomcatの再起動時に読み込む構成にしました。
@ConfigurationProperties を使う設定クラスに、どこから値を渡すかを調べた記録です。 当時の構成では、設定クラスで次の指定を使いました。@PropertySource("classpath:application.properties")
設定クラスの @PropertySource は、アプリケーションからクラスパスで参照できる application.properties をSpringのプロパティソースに追加します。 @ConfigurationProperties(prefix = "app") は、その設定環境から app 以下の値を設定クラスへ割り当てます。ファイルの場所を決めるのは、上の @PropertySource とクラスパスの指定です。 Springの悪いところで、分かれば簡単なのですがアノテーションが多すぎて何と何がどんな動きをするのか分かりづらいというのは私が勉強不足なだけなのでしょうか。 当時の手順では、Tomcatの起動スクリプト catalina.sh の CLASSPATH に、WAR外の application.properties を置いたディレクトリを追加します。アプリケーションからその場所がクラスパスで見える構成で、再起動後にファイルを読み込みます。 Spring Bootには起動時に設定ファイルを探索する仕組みがあります。実行可能jarの外部化や環境変数の優先順位は、冒頭の関連記事にある実行例を参照してください。 
