web-dev-qa-db-ja.com

Spring Bootがapplication.dev.propertiesファイルをロードしない

私のプロジェクトでは、環境固有のプロパティファイルを使用します。たとえば、開発で実行している場合はapplication.dev.propertiesを使用し、本番環境ではapplication.prod.propertiesを使用する必要があります。

リソースフォルダーに2つのファイルがあります。

  1. application.properties(本番用)
  2. application.dev.properties(開発用)

各ファイルに以下のような1つのプロパティがあります。

製品向け

server.database.Host=192.168.1.1

開発者向け

server.database.Host=192.168.12.125 

そして、私は以下のようなクラスを持っています

 public class DataSource {

     @Value(${server.database.Host})
     String Host;

上記のコードは、--spring.profiles.active=devのような開発者に適切な引数を指定しても、常にprod設定(application.properties)ファイルを取ります

以下は、開発プロパティファイルをロードするために使用しているコマンドです。

Java -jar myjar.jar --spring.profiles.active=dev

また、アクティブなプロファイルがdevであると表示されますが、常にprod dbに接続します。

11
Sam

私が気づいたいくつかの問題:

  1. _@Value_プロパティ名はStringのようにする必要があります@Value("${server.database.Host}")
  2. プロファイル固有のプロパティファイルは_application-{profile}.properties_形式に従う必要があります。 _application-dev.properties_
  3. _-D_のように_Java -Dspring.profiles.active=dev -jar app.jar_でプロファイルを渡してみてください
28
Kyle Anderson

実行構成にvm引数を追加してみてください。

-Dspring.profiles.active=dev
4
abj1305

EclipseまたはSTSで実行している場合は、次の手順を使用します。

  1. プロジェクト->実行->実行構成を右クリックします。

  2. 新しいウィンドウで、左側にあるスプリングブートアプリケーションを選択し、右側に詳細を追加し、プロファイルドロップダウンでdevを選択します。 enter image description here

  3. [適用して実行]をクリックします。

1
KayV

次のように、実行するプロファイルを指定することになっています。

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar

ドキュメントも参照してください: https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-profiles.html

0
hreinn