容器监听器(ContextLoaderListener)

Exisi 2022-06-28 13:01:21
Categories: Tags:
  • 为了解决Servlet中创建容器次数过多和无法复用的问题,Spring提供了使用容器监听器
  • ContextLoaderListener 是一个监听器对象, 继承自ContextLoader,实现的是ServletContextListener接口
  • 使用这个监听器作用:
    • 一次创建容器对象
    • 把容器对象放入到ServletContext作用域
  • ServletContextListener是为了接收ServletContext生命周期变化事件定义的接口,而ServletContext是定义了一系列和servlet容器通讯方法的接口,springContextLoaderListener继承了它,只要在web应用中注册了这个监听自然也就能够收到容器启动和销毁事件

 

  • 启动Web容器时,ContextLoaderListener读取在contextConfigLocation中定义的xml文件,自动装配ApplicationContext的配置信息,并产生WebApplicationContext对象,然后将这个对象放置在ServletContext的属性里

 

  • 这样我们只要得到Servlet就可以得到WebApplicationContext对象,并利用这个对象访问spring容器管理的bean

 

  • 即通过配置为项目提供了spring支持,初始化了Ioc容器

 

 

 

设置监听器

  • web.xml中加入配置。

示例

<!-- 配置spring核心监听器 -->

<listener>

  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- contextConfigLocation参数用来指定Spring的配置文件路径 -->

<context-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>/resource/applicationContext.xml</param-value>

</context-param>

 

  • 获取监听器对象

ApplicationContext context = WebApplicationContextUtils

                    .getWebApplicationContext(servletContextEvent.getServletContext());

 

来自< https://www.cnblogs.com/xunyi/p/10363290.html>