在 Web 应用程序初始化时调用 Spring @Service

Calling a Spring @Service on web application initialization

我有一个 Web 应用程序,当我将 .war 放入 Tomcat webapp 文件夹后,它需要一些静态变量初始化。此初始化需要调用@Service 来检索初始设置。

我意识到 @Autowire 注入仅在我的 GUI 调用服务时有效

将 .war 放入应用程序容器后,初始化我的 Spring 网络应用程序的最佳方法是什么?我只需要执行一次此初始化。

如果你需要在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 " />

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#context-functionality-events

另一方面,仅供参考,传统方法是使用 ServletContextListener 来完成。 http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html