Spring与Web环境集成

ApplicationContext应用上下文获取方式

使用ServletContextListener监听Web应用启动,当web项目启动时就加载Spring配置文件,创建应用上下文对象ApplicationContext,将其储存在最大的Servlet域中,就可以在任意位置从域中获得应用上下文ApplicationContext对象了。

@WebListener
public class ContextLoaderListener implements ServletContextListener {
    //创建
    public void contextInitialized(ServletContextEvent sce) {
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationcontext.xml");
        //将spring的应用上下文对象存储到spring域中
        ServletContext servletContext = sce.getServletContext();
        servletContext.setAttribute("app",app);
    }
    //销毁
    public void contextDestroyed(ServletContextEvent sce) {
    }
}
Spring提供获得应用上下文的工具
  1. 在web.xml中配置ContextLoaderListener监听器(导入spring-web坐标)
  2. 使用WebApplicationContextUtils获得应用上下文对象ApplicationContext

Web配置文件

<!--全局初始化参数-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
<!--配置监听器-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

使用

//获取servlet域
ServletContext context = this.getServletContext();
//通过Spring提供的工具获取配置文件
WebApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(context);
UserService userService = (UserService) app.getBean("userService");
userService.save();
Last modification:October 3rd, 2020 at 11:39 pm
如果觉得我的文章对你有用,请随意赞赏