LoginSignup
2

More than 5 years have passed since last update.

Spring Boot の設定を環境毎に切り替える

Posted at

本番と開発環境で設定を切り替える

その0: 環境変数や Java 引数

納品しない Web App なら、これが一番良いと思いますが、それが使えない時に2パターンほど。

その1: application-dev.yml を常に参照して、ビルドシステムで本番用の jar/war には入れない

メリット: application-dev.yml にセンシティブな情報が入っていても、お客さんの手元の jar には含まれない
デメリット: リリース版の jar で何かがおかしいときに、簡単に -Dspring.profiles.active=dev にして動かしてみるということができない。

→ ISV 向け

やり方

まずこんな感じで二つファイルを設置

src/main/resources/
├── application-dev.yml
└── application.yml

application.yml では spring.profiles.include: dev を追加しておく

gradle で exclude の設定

build.gradle
sourceSets.main.resources.excludes << '**/application-dev.yml'

ビルド後のファイルに、開発用ファイルが含まれていないことを確認。

% gradle clean assemble
:compileJava
:classes
:findMainClass
:jar
:bootRepackage

BUILD SUCCESSFUL

Total time: 2.065 secs

% jar -tvf build/libs/*.jar | grep yml
157 Sun Apr 23 16:41:50 JST 2017 BOOT-INF/classes/application.yml

その2: 本番には devtools を入れずに、devtools 有無で本番 war かどうかを判定

メリット: 基本的に全部 Java の世界で話しが終わる。
デメリット: 本番 jar にも、参照されない application-dev.yml が含まれる。環境変数利用して、開発用のプロファイルで動かしてみることができる。

→ 社内でサーバーが動く Web 向け

やり方: http://qiita.com/kazuki-ma/items/56d696d23e59e569c8c7

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
2