Spring(八):集成web环境

ApplicationContext应用上下文获取方式

应用上下文对象是通过new ClassPathXmlApplicationContext(Spring配置文件)方式获取的,但是每次从容器中获取Bean时都要编写这一句话,这样的弊端是配置文件加载多次应用上下文对象创建多次。

那么,应该如何解决这个问题?

只需要在服务器启动时创建Spring容器,然后把他放到一个公共的地方比如ServletContext即可,这样所有的Servlet都可以访问到,从而获取Bean。

那么我们可以使用监听器来处理,在web项目中使用ServletContextListener监听web应用的启动,我们可以在web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicationContext,在将其存储到ServletContext域中,这样就可以在任意的位置从域中获取应用上下文对象ApplicationContext对象了。

第一步:自定义监听器来监听web应用,当应用启动时,加载Spring的注解配置类,创建Spring容器,然后存储到ServletContext中。

第二步:在web.xml中进行配置

第三步:修改Servlet中的代码,不再创建ApplicationContext,而是从ServletContext中获取

但是,我们注意到,在监听器中的核心配置类是写死的,如果以后要修改的话,就不方便,这时我们可以采取配置文件的方式替代。
这里要介绍web.xml中的全局参数,在web.xml中这样配置:

在代码中这样来获取web.xml中的全局初始化参数:

Spring提供获取上下文应用的工具

Spring提供了一个监听器ContextLoaderListener就是对上诉功能的封装,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext中,提供了一个客户端工具WebApplicationContextUtils供使用者获得应用上下文对象。

我们需要做的是:
(1)在web.xml中配置ContextLoaderListener监听器(导入spring-web包,监听器被放到这个包中)
(2)使用WebApplicationContextUtils获得应用上下文对象ApplicationContext

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容