spring boot配置监听器listener

Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。用于监听servletContext、HttpSession和servletRequest等域对象的创建和销毁事件

springboot中创建监听器两种方式:


一、通过代码方式注入过滤器,

@Configuration 类中 

 @Bean
  public ServletListenerRegistrationBean servletListenerRegistrationBean(){
    ServletListenerRegistrationBean servletListenerRegistrationBean = new ServletListenerRegistrationBean();
    servletListenerRegistrationBean.setListener(new IndexListener());
    return servletListenerRegistrationBean;
  }

监听器具体类:

public class MyListen implements HttpSessionListener {
    public static int online = 0;
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("session监听器初始化");
        online++;
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("session监听器销毁");
    }
}

二 注解方式

@WebListener
public class MyListen implements HttpSessionListener {
    public static int online = 0;
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("session监听器初始化");
        online++;
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("session监听器销毁");
    }
}

启动类上使用@ServletComponentScan,自动扫描带有(@WebServlet, @WebFilter, and @WebListener)注解的类,完成注册。

@SpringBootApplication
@MapperScan("com.baomidou.ant.mapper")
@ServletComponentScan
public class PlusApplication {

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

Controller:(必须调用实例化HttpSession   才会调用监听器)

@Controller
public class SslController {


    @RequestMapping("/")
    public String index(HttpSession session) {

        return "index";
    }
}

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

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) -- 删除属性时执行

监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。
在springboot中,创建一个监听器是很方便的,只需要根据需求实现上面的几种监听器的其中之一。然后在你创建的监听器加上注解@WebListener ;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;

/**
 * @Author: Galen
 * @Date: 2019/6/25-15:11
 * @Description:登陆监听器
 **/
@WebListener
public class LoginListener implements ServletRequestListener {

    @Override
    public void requestInitialized(ServletRequestEvent servletRequestEvent) {
        System.out.println("---------------------------->请求创建");
    }
    @Override
    public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
        System.out.println("---------------------------->请求销毁");
    }
}

最后,在启动类加上注解@ServletComponentScan(basePackages = "com.apl.pgs.listener.*"),开启监听器。
basePackages =监听器的 包名+类名 。可以开启一个或多个。
这样,监听器就配置完成了,具体业务逻辑可以在监听器做处理了。

 

本文参考博文 https://blog.csdn.net/zhaoxichen_10/article/details/93622162

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章