4

私はSpring Platformで少し新しいです。XML ベースの Spring プロファイルを実装しています。

次のように web.xml で 1 つのプロファイルを宣言しました

<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</context-param>

Java クラスでアクティブなプロファイル値を取得したいと考えています。

これは私の最初の試みですが、いくつかの問題のために機能しません。

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
String profiles[] = ctx.getEnvironment().getActiveProfiles();
System.out.println(profiles[0]);

null値が表示されます.Javaクラスでプロファイルをアクティブにする方法はありますか?

4

2 に答える 2

0

web.xmlがあるので、これをサーブレットコンテナにデプロイしていることを意味します。春はApplicationContext内部を保管しServletContextます。を使用すると、次ServletContextのように取得できApplicationContextます...

ServletContext sc = request.getSession().getServletContext();
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(sc);

Javaアプリケーション(メインメソッド)またはテスト内でプロファイルを設定する場合は、プロファイルのシステムプロパティを設定するだけです...

java -Dspring.profiles.active="dev" org.hyness.MyClass

web.xmlを使用しない2番目のコンテキストをインスタンス化しているため、サンプルは機能していません。

于 2013-01-03T23:00:34.393 に答える