環境に依存するアクティブプロファイルホストを設定したいが、環境に依存しないフックを見つけることができない。アクティブなプロファイルを任意の環境にプログラムで設定する方法はありますか?
次の工場では、アプリケーションコンテキストを構築する前にアクティブプロファイルを設定します。
/META-INF/spring.factories
org.springframework.context.ApplicationContextInitializer=MyApplicationContextInitializer
MyApplicationContextInitializer.java
public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext ca) {
ConfigurableEnvironment environment = ca.getEnvironment();
environment.addActiveProfile("myHost");
}
}
この例では、JUnitので模擬環境で実行されている場合は...
* Test.java
...
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
...
...以下が記録されます。
...
... RestControllerTests : The following profiles are active: myHost
...
が、プロファイルMYHOSTはアクティブではなく、デフォルトのプロファイルは、JUnitののコンテキストで使用されます!
VM引数を持つJavaアプリケーションとJUnitなどのテストが動作する...私は戦争パッケージ春ブート・スターター・ウェブアプリを使用して、プログラムプロファイルが設定され、どのような環境で使用しなければならない
-Dspring.profiles.active=myHost
- Javaアプリケーション
- JUnitの
- サーブレットコンテナ
プロファイルをに設定するにはどうすればよいですか?はどのような環境でも構いません。
プロファイルは現在のホスト名で設定されるため、VMの引数または環境変数は使用しません。
このソリューションは、Javaアプリケーションとしてのみ実行のために働きます'main'メソッドはサーブレットコンテナやJUnit-Testでは使われないからです。 –
@mg。あなたに役立つかもしれない別のオプションで編集してください。 – Tom
'postProcessBeanFactory'はアクティブなプロファイルが既に設定された後に呼び出されます。 oswcsGenericWebApplicationContext:リフレッシュするorg.s[email protected]2df6226d:起動日[..]のログを取得します。 。]; 'postProcessBeanFactory'の私のブレークポイントのコンテキスト階層のルートです。 –