通过Spring拦截器实现抽取(减少)if-else的效果

维护之前的代码,要求加一个“开关”,如果该客户没有安装人脸设备,那么所有人脸方法不下发。当然,笨的人可以不厌其烦的在所有调用人脸方法的地方加上查表后判断if else。但是,我观察到所有人脸都有一个统一的入口,我能否直接在入口处进行拦截呢?以前只知道请求是可以拦截的,但是shiro帮我们做好了。这次自己自定义实现Method的拦截器,感觉很有意义。当时,原理还是aop、反射那一套。(过滤器也是。但监听器是回调)

【与网上搜到的常见普通拦截实现(@Before@Around@After)不同的是,我不是要在方法前后设置什么(比如换数据源,刷新redis),而是不符合检验时,让方法直接结束。[简单的处理就是if-else就能实现了😆,但今天想玩点花的😆]】

参考文章:

spring拦截器不只有Handler,还有Method,就是我要的
实例篇——springboot自定义拦截器
https://www.cnblogs.com/zzb-yp/p/11512126.html
spring-boot笔记-HandlerInterceptor和MethodInterceptor(AspectJ)(四)
https://blog.csdn.net/u013185616/article/details/72926966
spring方法拦截实例
https://www.cnblogs.com/canghaihongxin/p/7102986.html
使用spring的MethodInterceptor实现aop功能的三种方式
https://blog.csdn.net/u013905744/article/details/91364736

联动:
我的通过切面实现刷新redis

参考上述应该复制黏贴就完事了。具体代码放在有道云笔记了。

遗留问题:
问题:拦截器执行了两遍(但是目标方法并没有执行两遍,问题不大)
两次的问题(有说void,有说mvc视图但前后端分离而无法后端有有效视图 ,而我看到区别是 return methodInvocation.proceed();但其实写法改了即使return null也仍会如此)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值