在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在Web应用启动时就加载Spring的配置文件,创建Spring容器,再将其储存到全局域servletContext域中。这样就可以在任意位置从域中获得应用上下文ApplicationContext对象,避免重复构建。
一、添加web相关依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
二、在web.xml中配置ContextConfigListener监听器
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--Spring自带配置工具-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
三、使用WebApplicationContextUtils获取Spring容器
public static WebApplicationContext getWebApplicationContext(ServletContext sc) {
return getWebApplicationContext(sc, WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
}