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

相关文章

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

如何配置Spring Boot中的Jackson序列化

《如何配置SpringBoot中的Jackson序列化》在开发基于SpringBoot的应用程序时,Jackson是默认的JSON序列化和反序列化工具,本文将详细介绍如何在SpringBoot中配置... 目录配置Spring Boot中的Jackson序列化1. 为什么需要自定义Jackson配置?2.

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col