LoginSignup
0
0

Spring Boot において application.properties を環境ごとに切り替える

Posted at

application.properties とは?

Java のフレームワークである Spring Boot で設定情報をキーバリュー形式で記載できるファイルのこと。この設定情報は JVM のシステムプロパティとして設定される。

application.properties
sample.properties=sample
java sample
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class SampleApplication {
   private final Environment env;
   public DemoApplicationRunner(Environment env) {
       this.env = env;
   }

   public String sample() {
       return env.getProperty("sample.properties");
   }
}

上記の例では "sample" という文字列を取得している。

読み込むファイルを選択できる

application-(環境名).properties と命名し、JVM のプロパティ spring.profiles.active に環境名を設定することで、読み込むファイルを選択できる。
その際、環境名を付与していないファイルは常に読み込まれる。

以下の構成において、spring.profiles.active=dev とした場合、
・application.properties
・application-dev.properties
の 2 つが読み込まれる

ディレクトリ構成
|--src/main
|  |--java
|  |  :
|  |--resources
|  |  |--application.properties
|  |  |--application-dev.properties
|  |  |--application-prod.properties
application.properties が常に読み込まれることを利用して、spring.profiles.active を設定することもできる。
application.properties
spring.profiles.active=dev

環境変数を使用した application.properties の切り替え

${ENVIRONMENT_VARIABLE} とすることで application.properties では環境変数を使用できる ( : を使用してデフォルト値を設定できる )。

application.properties
spring.profiles.active=${SPRING_PROFILES_ACTIVE:defaultEnvName}

環境変数を適切に設定しておくことで、プログラムの起動時に毎回プロパティを設定する必要がなくなる。

reference

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0