自定义注解实现权限校验含义_厉害了!老大利用AOP实现自定义注解,半小时完成我三天工作量...
前面我们已经介绍了AOP适用的一些业务场景以及简单的代码实现,当时我们的切点是用execution表达式来配置的,这种方式有一些局限性在里面:
- 灵活性不高,一个表达式只能切到某种同类型的方法
- 个性化不足,很难对切面切到的所有方法中的一些做一些个性化的设置
这让我想起有以前我还是一个菜鸟时接到的一个需求,要在所有接口中记录请求日志,因为项目比较老了,所以接口还是挺多的,我预估需要三天才能完成,我们老大鄙视了我一眼,然后花半小时就完成了。
今天我们就来讲讲切点的另一种配置方式:@annotation,通过@annotation配置切点,我们可以灵活的控制切到哪个方法,同时可以进行一些个性化的设置,今天我们就用它来实现一个记录所有接口请求功能吧。
首先来看看我们要实现的效果
通过结果我们可以看到,我们的自定义注解EagleEye做到了统一的记录下了请求链接、请求类型、请求IP、请求入参、请求耗时、请求返回等信息。
是不是感觉还不错呢?下面我们就来一起动手实现它吧!
添加依赖
新建一个Spring Boot项目,打开pom.xml文件添加相关Maven依赖:
自定义一个注解
我们定义了一个注解,定义注解使用@interface:
- 定义了注解的生命周期为运行时
- 定义了注解的作用域为方法
- 标识该注解可以被JavaDoc记录
- 定义注解名称为EagleEye(鹰眼,哈哈~~)
- 定义一个元素desc,用来描述被修饰的方法
注解虽然定义好了,但是还用不了,因为没有具体的实现逻辑,接下来我们用AOP实现它。
配置AOP切面
首先我们定义切点:
我们通过@annotation来配置切点,代表我们的AOP切面会切到所有用EagleEye注解修饰的类。
接下来我们利用@Around环绕增强来实现我们的功能:
- 首先我们先记录请求链接、接口描述、请求类型、请求IP、请求入参信息
- 接着执行我们注解切到的原方法逻辑
- 最后我们记录整个请求耗时、返回结果
OK,到这里,我们就完成了利用AOP自定义注解的所有步骤。
怎么使用自定义注解?
修饰Controller里的接口方法:
修饰Service里的方法:
对于需要AOP增强的方法,我们只需要:
- 在方法上加上@EagleEye注解
- 通过desc元素设置方法的描述
接下来启动应用,请求接口看一下控制台输出是不是像我们开头贴出的那样吧。总结
当然,这仅仅是自定义注解的一种小用法而已,其他比如实现接口的自动加解密、权限过滤等更多实用功能,都会出现在后面的文章中。
自定义注解实现权限校验含义_厉害了!老大利用AOP实现自定义注解,半小时完成我三天工作量...相关推荐
- springboot security 权限校验_springboot借助aop和注解实现权限校验
我们用springboot做后台开发,难免会用到权限校验,比如查看当前用户是否合法,是否是管理员.而spring的面向切面的特效可以帮助我们很好的实现动态的权限校验.这里我们就用到的spring的ao ...
- 非会员只能试看20分钟_做欧包都要把铁锅烤半小时?太费电了,用我这办法只需预热几分钟...
最近迷上了做欧包,做欧包要用蒸烤箱,做好的欧包才会外脆内软,如果没有蒸烤箱的话人们又研究出了用铸铁锅来做,先把铸铁锅放在烤箱里烘烤半小时左右,然后把面包坯子放入铸铁锅盖好盖子迅速放回烤箱, 因为锅的热 ...
- 【Vue3 造轮子项目 】kaiteUI中利用Custom Block(自定义块)和vite实现代码渲染器
关于kaiteUI中通过json数据实现代码渲染器 前言 上礼拜笔者分享了搭建UI框架的技术栈,其中一个较为关键的技术--代码渲染器,由于篇幅问题放到了今天这篇博客中给大家做一个详细的分析解读. 在这 ...
- 自定义注解实现RBAC权限校验,不要再说你不会了
目录 1.前言 2.实现思路 3.编码实战 3.1.准备 3.2.数据库表准备 3.3.自定义注解 3.4.拦截器 3.5.接口使用 3.6.测试 3.7.结论 4.结束语 1.前言 学过Spring ...
- SpringBoot:切面AOP实现权限校验:实例演示与注解全解
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 目录 理解AOP 什么是AOP AOP体系与概念 AOP实例 第一个实例 ...
- 利用自定义注解实现权限验证
思路: 根据自定义注解,给对应权限能够查看到的资源的Controller方法上添加注解(也就是一个权限字符串),权限字符串跟方法是一对多的关系,同一个权限字符串可以添加到多个方法上:当用户有对应的权限 ...
- 切面AOP实现权限校验:实例演示与注解全解(强烈推荐)
点击关注公众号,利用碎片时间学习 1 理解AOP 1.1 什么是AOP AOP(Aspect Oriented Programming),面向切面思想,是Spring的三大核心思想之一(两外两个:IO ...
- 【SpringBoot-3】切面AOP实现权限校验:实例演示与注解全解
SpringBoot中的AOP处理 1 理解AOP 1.1 什么是AOP 1.2 AOP体系与概念 2 AOP实例 2.1 第一个实例 2.2 第二个实例 3 AOP相关注解 3.1 @Pointcu ...
- @retention注解作用_分分钟带你玩转SpringBoot自定义注解
在工作中,我们有时候需要将一些公共的功能封装,比如操作日志的存储,防重复提交等等.这些功能有些接口会用到,为了便于其他接口和方法的使用,做成自定义注解,侵入性更低一点.别人用的话直接注解就好.下面就来 ...
最新文章
- 委托、事件、事件访问器
- KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点
- 医工智能 创享未来—— “医工科研数据平台”与“医工结合科研创新支持计划”发布!...
- 聚焦与发散——浅谈编程的发展方向
- HBuilder完成webApp入门(2)
- 低通滤波器算法实现_控制算法手记自抗扰控制的几点思考
- 马鞍数55c语言_c语言超全练习题(全面更新)
- 基于Ribbon界面的MFC应用程序
- Nuvoton M0518 之 Slave SPI通信注意事项
- 如何迅速提升网站流量
- 数据库例题(创建数据库SPJ包含S、P、J和SPJ表)
- 免费的PDF转换工具,简单高效有它就够了!
- 学校运动会广播稿计算机,学校运动会广播稿十篇
- 自制USB转串口TTL(ch340)
- 盛大私有化和陈天桥的土皇帝心态
- MindNode 5 for Mac 5.0.1 强大的思维导图的应用
- LevelDB——Compaction操作理解
- 俞敏洪:三件让人幸福的事情:有人爱,有事做,有所期待——经典的人生需要效仿
- Java 通过证书访问Https服务
- >>数据管理:DAMA简介「考试和续期」
热门文章
- 全国职称计算机考试教程,全国职称计算机考试专用教程:Excel 2003 中文电子表格(附光盘)...
- 独立站需要用到哪些营销手段?
- 惯性积计算实例_关于材料力学中惯性矩的认识00
- input标签中使输入文本向右偏移像素解决方案(亲测有效)
- Leetcode每日一题:454.4sum-ii(四数相加Ⅱ)
- HDU - 1087
- UWP 流畅设计中的光照效果(容易的 RevealBorderBrush 和不那么容易的 RevealBackgroundBrush)...
- 用WPF实现在ListView中的鼠标悬停Tooltip显示
- 第十一:Pytest进阶之conftest.py
- php new static,PHP中new static()与new self()的区别异同分析