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) throws
	Exception {
	}
	/** 整个请求处理完毕回调⽅法,即在视图渲染完毕时回调,⽐如性能监控中我们可以在此记录结束时
	间并输出消耗时间
	* 还可以进⾏⼀些资源的清理,类似于try...catch...finally中的finally。
	*/
	public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, @Nullable Exception ex) throws
	Exception {
	}
	/**
	* 不是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的一些接口。


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-玫瑰少年-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值