私のプロジェクトでは、環境固有のプロパティファイルを使用します。たとえば、開発で実行している場合はapplication.dev.propertiesを使用し、本番環境ではapplication.prod.propertiesを使用する必要があります。
リソースフォルダーに2つのファイルがあります。
各ファイルに以下のような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に接続します。
私が気づいたいくつかの問題:
@Value
_プロパティ名はString
のようにする必要があります@Value("${server.database.Host}")
application-{profile}.properties
_形式に従う必要があります。 _application-dev.properties
_-D
_のように_Java -Dspring.profiles.active=dev -jar app.jar
_でプロファイルを渡してみてください実行構成にvm引数を追加してみてください。
-Dspring.profiles.active=dev
次のように、実行するプロファイルを指定することになっています。
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
ドキュメントも参照してください: https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-profiles.html