我有一个Web应用程序,只要我在Tomcat webapp文件夹中抛出.war,就需要一些静态变量初始化。这个初始化需要调用@Service来检索初始设置。
我意识到@Autowire注入仅在我的GUI调用服务时才有效
在应用容器中抛出.war后,初始化Spring Web应用程序的最佳方法是什么?我需要这个初始化只执行一次。
答案 0 :(得分:1)
如果在初始化servletContext之后需要执行某些操作,那么在Spring中,我们使用ApplicationListener来执行此操作。
public class SpringListener implements ApplicationListener<ContextRefreshedEvent>{
// this should work if other setting is right
@Autowired
XXX xxx;
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent ) {
// do things here
}
}
in application.xml
<bean id="eventListenerBean" class="package.name.SpringListener " />
另一方面,仅仅是FYI,传统的方法是使用ServletContextListener来完成它。 http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html