私が取り組んでいるアプリケーションには、XML ベースの Spring 構成 (フレームワーク バージョン: 4.1.7.RELEASE) があります。
プロファイルが指定されている場合、特定の Bean をインスタンス化する必要があるため、次を my に追加しましたweb.xml
。
<servlet>
<servlet-name>my-app</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- This part is new -->
<init-param>
<param-name>spring.profiles.active</param-name>
<param-value>${spring.profile}</param-value>
</init-param>
<!-- End of newly-added part -->
<load-on-startup>1</load-on-startup>
</servlet>
spring.profile
選択された Maven プロファイルに基づいて、Maven pom.xml で設定されたプロパティです。
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<spring.profile>development</spring.profile>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<spring.profile>production</spring.profile>
</properties>
</profile>
</profiles>
maven-war
選択した Maven プロファイルに基づいてプレースホルダーが適切な値に置き換えられるため、プラグインでフィルタリングを有効にしました。これは期待どおりに機能します。したがって、Maven が関与する部分はクリアされ、正常に動作します。
ただし、Environment インスタンスを挿入しようとすると、アクティブなプロファイル リストが空になります。
@Autowired private Environment env;
...
log.info(env.getActiveProfiles().toString());
のservletConfigInitParams
プロパティ ソースのリストに が表示されますがEnvironment
、 myinit-param
は単に無視されているようです。
2 つの Maven プロファイルで実際のシステム プロパティを提供し、それらのセットで実行することで、Spring プロファイルを設定することができましたが、これは運用環境で実行可能なソリューションではなく、コマンド ラインから提供することもできません。
誰が私が間違っているのか教えてもらえますか?