springboot关于监听器Listener的应用

关于监听器的类型其实有很多,有HttpSessionListenerservletContextservletRequest等,这些都是tomcat封装的接口,所以都可以自定义这些接口来定义符合我们业务需求的监听器。
这里以HttpSessionListener为例
1、打开源码HttpSessionListener可以发现接口中有两个方法,一个是session创建的方法,一个是session销毁的方法
在这里插入图片描述
sessionCreated是创建会话是调用,源码注释是“Notification that a session was created.The default implementation is a NO-OP.”
sessionDestoyed是会话销毁时调用
源码中的方法都是没有任何内容的,所以意味着咱们可以完完全全的自定义自己的session监听器
2、自定义监听器类

public class MyListener implements HttpSessionListener {
    public static int online=0;

    @Override
    public void sessionCreated(HttpSessionEvent se) {//创建一次session会话,online+1
        System.out.println("创建session");
        online++;
        System.out.println(online);
    }

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

}

3、启动类中添加监听器启动方法

@Bean
    public ServletListenerRegistrationBean listenerRegist(){
        //servlet监听器对象
        ServletListenerRegistrationBean srb = new ServletListenerRegistrationBean();
        /**
         * setListener():传入的值若为空,会报“Listener must not be null”
         * 若为非法值,会报“Listener is not of a supported type”
         */
        srb.setListener(new MyListener());
        System.out.println("listener");
        return srb;
    }

4、测试类Controller

@Controller
@ResponseBody
public class ThymeleafController {
    @RequestMapping("/login")

    public String login(HttpServletRequest request){
        HttpSession session = request.getSession(true);
        return "login";
    }

    @RequestMapping("online")
    public String online(){
        return "当前在线人数:"+ MyListener.online +"人";
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过实现 `ApplicationListener` 接口来添加 `SpringBoot` 启动时的监听器。以下是一个示例: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(MyApplication.class); app.addListeners(new MyApplicationListener()); // 添加自定义的监听器 app.run(args); } // 自定义的监听器 public static class MyApplicationListener implements ApplicationListener<ApplicationEvent> { @Override public void onApplicationEvent(ApplicationEvent event) { // 在应用程序启动时触发的逻辑处理 System.out.println("应用程序启动了!"); } } } ``` 在上面的示例中,我们创建了一个 `MyApplicationListener` 类,实现了 `ApplicationListener` 接口,并重写了其 `onApplicationEvent` 方法,用于在应用程序启动时执行自定义逻辑。 在 `main` 方法中,我们创建了一个 `SpringApplication` 对象,并通过 `addListeners` 方法将自定义的监听器添加到应用程序中,然后调用 `run` 方法启动应用程序。 当应用程序启动时,`onApplicationEvent` 方法将被调用,并执行我们定义的逻辑处理。这里只是简单地打印一条消息,您可以根据实际需求进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值