责任链
一种设计模式,它会将对象一个一个进行处理,如果第一个处理不了,会扔到后面的节点进行处理。像拦截器一样,当请求被第一个拦截器拦截之后,后面的拦截器就不用继续拦截了。否则一个接一个进行拦截。
拦截器
注册拦截器
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e392e17998e2d832dc284ef3fb671ee0.png)
往registrations变量添加拦截器
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d55e6a84ab97cdfed299904a391cf4ee.png)
运行步骤
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ac05cc96a3eb27441f48093caf5c50e7.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7c036614e93317210f7bb9c59b9775e8.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0e57248764a40d40f3203d97366965e4.png)
关键代码
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dd504930b0309610aa2395ce3d258eb5.png)
上面这张图尤为重要,像拦截器前致拦截boolean preHandle,为啥是boolean,再这里进行判断。
其次也是责任链的体现,一个一个拦截器执行,如果中途有一个已经拦截到了,返回false。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8f4655fe21a1eaa6000c2f98ee161ba2.png)
可以看到这个就是我们之前注册的拦截器哦~