请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于ConcurrencyApplication的addInterceptors

图片描述

图片描述
我打印了程序执行的过程,但是对于addInterceptors这个方法的作用没有明白。添加拦截器到spring-boot中。虽然说是这样。但是registry.addInterceptor(new HttpInterceptor()).addPathPatterns("/**");这一句代码究竟在做什么,还是没有明白。
另外如果想要添加多个过滤器,就是仿照上面的httpFilter()的方法,多写几个就可以了么?
拦截器是整个项目只要有一个就行了么?还是说,也会多写几个,如果这样的话。在dofilter的调用里,进入拦截器的位置和作用和顺序会是怎么样呢?因为诚如我看到的执行顺序,在dofilter里面我们没有调用过HttpInterceptor,是系统自己调用的,如果有多个拦截器,会怎么样呢?会支持这种情况吗?

正在回答

1回答

你好,这里的拦截器和过滤器和springmvc里的拦截器和过滤器是相同的,只是不少同学之前springmvc用习惯了他们,而springboot里不再使用xml配置,我这里演示了一下如何配置。
看你提的问题,猜测你可能没用过,建议你可以多查一些资料加深一下理解。拦截器和过滤器对于提供http接口的应用很重要,原因在于他们可以拦截系统收到的请求,在请求前后做一些事情,比如添加监控、准备数据、验证身份、记录日志等等,相当于根据请求的url拦截指定接口,并且在切面里完成一些通用的工作,这样很多相似的逻辑就不需要在每个接口里去实现了,比如很多接口要验证登录。
同时,框架是允许配置多个拦截器和过滤器,但我们通常不会配置多个,配置多了接口的逻辑会变得复杂,不便于维护,目前我参与过的系统中,基本上都最多配置一个拦截器,但个别系统配置过多个过滤器,配置多个过滤器的需要注意配置顺序。

0 回复 有任何疑惑可以回复我~
  • 提问者 旺仔奶牛糖 #1
    晓得了,谢谢老师~
    回复 有任何疑惑可以回复我~ 2019-01-07 09:35:40
  • 提问者 旺仔奶牛糖 #2
    不过,对于拦截器和过滤器,也不是说完全没有用过,主要是有点分不太清楚他们各自的独立性。我觉得拦截器和过滤器都是差不多的功能,或者说他们其实可以实现差不多的功能。大型的规范项目没有从底层写过。所以没有尝试过两者的这种小模块化的专精功能。
    那么其实,主要的使用方式就是过滤器拦截住想要拦截的条件接口,然后做一些前置的操作,登录验证,准备数据之类的;然后拦截器是对接口本身的功能做一些操作,添加监控,记录日志之类,并且在之后做一些相对于前面过滤器的收尾工作吗?比如我们教程里提到的ThreadLocal的释放
    回复 有任何疑惑可以回复我~ 2019-01-07 09:43:03
  • Jimin 回复 提问者 旺仔奶牛糖 #3
    这一点没有明确的要求,只是过滤器从名字上也可以看出来更趋向于做些过滤的事情,拦截器更重要的是拦截相关的接口做些事情,但是两个同时使用的时候,需要在项目里明确使用时的细节区分及顺序,否则就可能出现问题。基于这一点,其实也就可以在项目里自己定义个这样的规范,就是上面提到的。
    回复 有任何疑惑可以回复我~ 2019-01-07 10:09:25
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信