こんなServletContextListenerがありまして:
@Override
public void contextInitialized(ServletContextEvent event) {
String mode = "Springプロパティファイルに定義された定数";
if ("xx".equals(mode)) {
// ある業務処理
}
}
contextInitialized
にSpringプロパティファイルに定義されたものがある条件を満たす場合のみ、「ある業務処理」が実行されます。
もちろん、web.xmlにも<init-param>
が使えますが、できるだけSpringの資産を流用したいので、web.xml
を修正しない方針です。
したがって、contextInitialized
にてSpringのContextを取得するとなりました。
修正後、メソッドの中身はこうなります:
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());
Environment env = context.getBean(Environment.class);
String mode = env.getProperty("some-prop");
if ("xx".equals(mode)) {
// ある業務処理
}
注意: ちなみに、web.xml
にてServletContextListener
の位置はorg.springframework.web.context.ContextLoaderListener
の後ろにしなければなりません。