ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringBoot——Listener(监听器)的使用

2021-03-07 18:00:00  阅读:86  来源: 互联网

标签:ServletContextEvent ServletContextListener SpringBoot -- Listener 监听器 import pub


常用的监听器接口

1.ServletContextListener – 监听servletContext对象的创建以及销毁

1.1    contextInitialized(ServletContextEvent arg0)   -- 创建时执行

1.2    contextDestroyed(ServletContextEvent arg0)  -- 销毁时执行

2.HttpSessionListener – 监听session对象的创建以及销毁

2.2   sessionCreated(HttpSessionEvent se)   -- 创建时执行

2.2   sessionDestroyed(HttpSessionEvent se) -- 销毁时执行

3.ServletRequestListener – 监听request对象的创建以及销毁

3.1    requestInitialized(ServletRequestEvent sre) -- 创建时执行

3.2    requestDestroyed(ServletRequestEvent sre) -- 销毁时执行

4.ServletContextAttributeListener – 监听servletContext对象中属性的改变

4.1    attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行

4.2    attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行

4.3    attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行

5.HttpSessionAttributeListener --监听session对象中属性的改变

5.1    attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行

5.2    attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行

5.3    attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行

6.ServletRequestAttributeListener --监听request对象中属性的改变

6.1    attributeAdded(ServletRequestAttributeEvent srae) -- 添加属性时执行

6.2    attributeReplaced(ServletRequestAttributeEvent srae) -- 修改属性时执行

6.3    attributeRemoved(ServletRequestAttributeEvent srae) -- 删除属性时执行

创建Listener的两种方式,ServletContextListener举例

1、通过注解的方式

创建一个类实现ServletContextListener的接口,在这个类上加@WebListener注解,并且在启动类加上@ServletComponentScan注解,这样就完成了。如果要改变监听器监听的对象,比如监听session对象,那就改成实现HttpSessionListener接口就行了

监听器类:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import javax.servlet.annotation.WebListener;



@WebListener
public class ListenerDemo1 implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("进入监听器");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}

启动类:

@SpringBootApplication
@ServletComponentScan
@MapperScan(basePackages = {"wwfww.warehouse.mapper"})//不加这句mapper依赖注入不进来
public class WarehouseApplication {

    public static void main(String[] args) {
        SpringApplication.run(WarehouseApplication.class, args);
    }




}

控制台输出:
在这里插入图片描述

2、在启动类注册Listener

创建一个类实现ServletContextListener接口,并且在启动类创建方法来注册就行了

监听器类:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;


public class ListenerDemo1 implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("进入监听器,方式二");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}

启动类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import tk.mybatis.spring.annotation.MapperScan;
import wwfww.warehouse.aaaTest.listener.ListenerDemo1;

@SpringBootApplication
@MapperScan(basePackages = {"wwfww.warehouse.mapper"})//不加这句mapper依赖注入不进来
public class WarehouseApplication {

    public static void main(String[] args) {
        SpringApplication.run(WarehouseApplication.class, args);
    }

    /**
     * 注册监听器Listener
     *
     * @return
     */
    @Bean
    public ServletListenerRegistrationBean get() {
        ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new ListenerDemo1());
        return bean;
    }


}

输出:
在这里插入图片描述

补充:如果实现接口,但是IDEA没有提示你实现接口里面的方法,如下:

在这里插入图片描述
接口里面可以看到有两个方法的

在这里插入图片描述
解决办法:

1、点击右键找到Generate
在这里插入图片描述

2、选择Override Methods

在这里插入图片描述

3、选择图中两个,点击OK就行了

在这里插入图片描述

监听器的应用场景

标签:ServletContextEvent,ServletContextListener,SpringBoot,--,Listener,监听器,import,pub
来源: https://blog.csdn.net/weixin_43085797/article/details/114490037

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有