私はWebコンテナ(Tomcat)で動作するSpringアプリケーションを持っています。このSpringアプリケーションのプロパティは、データベースJDBCの場所を見つけるために、ファイルを使用しています。Spring&Maven - Springアプリケーションにカスタムプロパティを提供する方法
app.propertiesで@Configuration
@PropertySource("classpath:app.properties")
public class MyApplication {
}
、私が持っている:
database.dataSource.url=jdbc:postgresql://localhost:5432/app
それは、実行時に値を取得するために今すぐ簡単です:
@Component
class DatabaseConfiguration {
@Value("${database.dataSource.url}")
private String URL;
}
これまでのところ、とても良いです。今では、統合テスト中にWARをデプロイするためにcargo-maven2-plugin
プラグインを使用しています。 WARがデプロイされる前に、adhoc PostgreSQLデータベースがdocker-maven-plugin
プラグインを介してDockerコンテナにデプロイされます。このインスタンスは、通常の5432ではなくカスタムの動的ポートで実行されます。このポートは、docker-maven-plugin
プラグインによって${database.port}
プロパティに入力されます。
これは、このポートを入力するために何とかapp.properties
をオンザフライで変更する必要があることを意味します。これはハックだと思われるので、を介してSpringアプリケーションにポートを提供/オーバーライドする方法があるので、app.properties
の代わりにそのポートを使用できますか?
これを達成するための「クリーンな」方法は何ですか?