HandlerInterceptor拦截器配置、SPI

2023-12-03 23:38

本文主要是介绍HandlerInterceptor拦截器配置、SPI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http请求在handler中的执行顺序:

前端发送请求---->preHandler---->afterConcurrentHandlingStarted----->Controller----->postHandle---->afterCompletion---->返回请求

HandlerInterceptorAdapter一般做一些登陆拦截。

package org.springframework.web.servlet.handler;
public abstract class HandlerInterceptorAdapter implements AsyncHandlerInterceptor {// 默认构造函数public HandlerInterceptorAdapter() {}/** 预处理回调⽅法,实现处理器的预处理(例如登录校验) 第三个参数为响应的处理器,⼀般是⾃定义的Controller* 返回值:true 表示继续流程,如调⽤下⼀个拦截器或者是处理器;false表示流程中断,不会再调⽤其他的响应器 * 或者处理器*/public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}/** 后处理回调⽅法,实现处理器的后处理(但是在渲染视图之前),此时我们可以通过ModelAndView对模型数据进⾏* 处理或者对视图进⾏处理。*/public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throwsException {}/** 整个请求处理完毕回调⽅法,即在视图渲染完毕时回调,⽐如性能监控中我们可以在此记录结束时间并输出消耗时间* 还可以进⾏⼀些资源的清理,类似于try...catch...finally中的finally。*/public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, @Nullable Exception ex) throwsException {}/*** 不是HandlerInterceptor的接⼝实现,是AsyncHandlerInterceptor的,AsyncHandlerInterceptor实现了HandlerInterceptor在有异步请求时触发,在preHandle返回true之后才执⾏这⾥,这⾥执⾏完成之后会触发postHandle和afterCompletion*/public void afterConcurrentHandlingStarted(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {}
}

SPI全称Service Provider Interface,服务发现机制,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。

这种动态装配有什么用呢?
可以把CatService理解为JDBC的接口,JDBC是Java为连接数据库定义的规范。
而WriteCatService和BlackCatService分别代表mysql连接和Oracle连接的实现类。

在导包的时候会导入mysql的驱动类:
在这里插入图片描述

看一下mysql的驱动类中都有些什么:
在这里插入图片描述
在这个包里面实现了JDBC的一些接口。


示例:
在这里插入图片描述
在这里插入图片描述

这篇关于HandlerInterceptor拦截器配置、SPI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/451294

相关文章

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

在Spring中配置Quartz的三种方式

《在Spring中配置Quartz的三种方式》SpringQuartz是一个任务调度框架,它允许我们定期执行特定的任务,在Spring中,我们可以通过多种方式来配置Quartz,包括使用​​@Sche... 目录介绍使用 ​​@Scheduled​​ 注解XML 配置Java 配置1. 创建Quartz配置

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规

Kibana的安装和配置全过程

《Kibana的安装和配置全过程》Kibana是一个开源的数据分析和可视化平台,它与Elasticsearch紧密集成,提供了一个直观的Web界面,使您可以快速地搜索、分析和可视化数据,在本文中,我们... 目录Kibana的安装和配置1.安装Java运行环境2.下载Kibana3.解压缩Kibana4.配

tomcat在nginx中的配置方式

《tomcat在nginx中的配置方式》文章介绍了如何在Linux系统上安装和配置Tomcat,并通过Nginx进行代理,首先,下载并解压Tomcat压缩包,然后启动Tomcat并查看日志,接着,配置... 目录一、下载安装tomcat二、启动tomcat三、配置nginx总结提示:文章写完后,目录可以自动

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7