前面我们已经介绍了AOP适用的一些业务场景以及简单的代码实现,当时我们的切点是用execution表达式来配置的,这种方式有一些局限性在里面:

  • 灵活性不高,一个表达式只能切到某种同类型的方法
  • 个性化不足,很难对切面切到的所有方法中的一些做一些个性化的设置

这让我想起有以前我还是一个菜鸟时接到的一个需求,要在所有接口中记录请求日志,因为项目比较老了,所以接口还是挺多的,我预估需要三天才能完成,我们老大鄙视了我一眼,然后花半小时就完成了。
今天我们就来讲讲切点的另一种配置方式:@annotation,通过@annotation配置切点,我们可以灵活的控制切到哪个方法,同时可以进行一些个性化的设置,今天我们就用它来实现一个记录所有接口请求功能吧。
首先来看看我们要实现的效果

通过结果我们可以看到,我们的自定义注解EagleEye做到了统一的记录下了请求链接、请求类型、请求IP、请求入参、请求耗时、请求返回等信息。
是不是感觉还不错呢?下面我们就来一起动手实现它吧!
添加依赖
新建一个Spring Boot项目,打开pom.xml文件添加相关Maven依赖:

自定义一个注解
我们定义了一个注解,定义注解使用@interface:

  1. 定义了注解的生命周期为运行时
  2. 定义了注解的作用域为方法
  3. 标识该注解可以被JavaDoc记录
  4. 定义注解名称为EagleEye(鹰眼,哈哈~~)
  5. 定义一个元素desc,用来描述被修饰的方法

注解虽然定义好了,但是还用不了,因为没有具体的实现逻辑,接下来我们用AOP实现它。
配置AOP切面
首先我们定义切点:

我们通过@annotation来配置切点,代表我们的AOP切面会切到所有用EagleEye注解修饰的类。
接下来我们利用@Around环绕增强来实现我们的功能:

  1. 首先我们先记录请求链接、接口描述、请求类型、请求IP、请求入参信息
  2. 接着执行我们注解切到的原方法逻辑
  3. 最后我们记录整个请求耗时、返回结果

OK,到这里,我们就完成了利用AOP自定义注解的所有步骤。
怎么使用自定义注解?
修饰Controller里的接口方法:

修饰Service里的方法:

对于需要AOP增强的方法,我们只需要:

  1. 在方法上加上@EagleEye注解
  2. 通过desc元素设置方法的描述

接下来启动应用,请求接口看一下控制台输出是不是像我们开头贴出的那样吧。总结
当然,这仅仅是自定义注解的一种小用法而已,其他比如实现接口的自动加解密、权限过滤等更多实用功能,都会出现在后面的文章中。

自定义注解实现权限校验含义_厉害了!老大利用AOP实现自定义注解,半小时完成我三天工作量...相关推荐

  1. springboot security 权限校验_springboot借助aop和注解实现权限校验

    我们用springboot做后台开发,难免会用到权限校验,比如查看当前用户是否合法,是否是管理员.而spring的面向切面的特效可以帮助我们很好的实现动态的权限校验.这里我们就用到的spring的ao ...

  2. 非会员只能试看20分钟_做欧包都要把铁锅烤半小时?太费电了,用我这办法只需预热几分钟...

    最近迷上了做欧包,做欧包要用蒸烤箱,做好的欧包才会外脆内软,如果没有蒸烤箱的话人们又研究出了用铸铁锅来做,先把铸铁锅放在烤箱里烘烤半小时左右,然后把面包坯子放入铸铁锅盖好盖子迅速放回烤箱, 因为锅的热 ...

  3. 【Vue3 造轮子项目 】kaiteUI中利用Custom Block(自定义块)和vite实现代码渲染器

    关于kaiteUI中通过json数据实现代码渲染器 前言 上礼拜笔者分享了搭建UI框架的技术栈,其中一个较为关键的技术--代码渲染器,由于篇幅问题放到了今天这篇博客中给大家做一个详细的分析解读. 在这 ...

  4. 自定义注解实现RBAC权限校验,不要再说你不会了

    目录 1.前言 2.实现思路 3.编码实战 3.1.准备 3.2.数据库表准备 3.3.自定义注解 3.4.拦截器 3.5.接口使用 3.6.测试 3.7.结论 4.结束语 1.前言 学过Spring ...

  5. SpringBoot:切面AOP实现权限校验:实例演示与注解全解

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 目录 理解AOP 什么是AOP AOP体系与概念 AOP实例 第一个实例 ...

  6. 利用自定义注解实现权限验证

    思路: 根据自定义注解,给对应权限能够查看到的资源的Controller方法上添加注解(也就是一个权限字符串),权限字符串跟方法是一对多的关系,同一个权限字符串可以添加到多个方法上:当用户有对应的权限 ...

  7. 切面AOP实现权限校验:实例演示与注解全解(强烈推荐)

    点击关注公众号,利用碎片时间学习 1 理解AOP 1.1 什么是AOP AOP(Aspect Oriented Programming),面向切面思想,是Spring的三大核心思想之一(两外两个:IO ...

  8. 【SpringBoot-3】切面AOP实现权限校验:实例演示与注解全解

    SpringBoot中的AOP处理 1 理解AOP 1.1 什么是AOP 1.2 AOP体系与概念 2 AOP实例 2.1 第一个实例 2.2 第二个实例 3 AOP相关注解 3.1 @Pointcu ...

  9. @retention注解作用_分分钟带你玩转SpringBoot自定义注解

    在工作中,我们有时候需要将一些公共的功能封装,比如操作日志的存储,防重复提交等等.这些功能有些接口会用到,为了便于其他接口和方法的使用,做成自定义注解,侵入性更低一点.别人用的话直接注解就好.下面就来 ...

最新文章

  1. 委托、事件、事件访问器
  2. KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点
  3. 医工智能 创享未来—— “医工科研数据平台”与“医工结合科研创新支持计划”发布!...
  4. 聚焦与发散——浅谈编程的发展方向
  5. HBuilder完成webApp入门(2)
  6. 低通滤波器算法实现_控制算法手记自抗扰控制的几点思考
  7. 马鞍数55c语言_c语言超全练习题(全面更新)
  8. 基于Ribbon界面的MFC应用程序
  9. Nuvoton M0518 之 Slave SPI通信注意事项
  10. 如何迅速提升网站流量
  11. 数据库例题(创建数据库SPJ包含S、P、J和SPJ表)
  12. 免费的PDF转换工具,简单高效有它就够了!
  13. 学校运动会广播稿计算机,学校运动会广播稿十篇
  14. 自制USB转串口TTL(ch340)
  15. 盛大私有化和陈天桥的土皇帝心态
  16. MindNode 5 for Mac 5.0.1 强大的思维导图的应用
  17. LevelDB——Compaction操作理解
  18. 俞敏洪:三件让人幸福的事情:有人爱,有事做,有所期待——经典的人生需要效仿
  19. Java 通过证书访问Https服务
  20. >>数据管理:DAMA简介「考试和续期」

热门文章

  1. 全国职称计算机考试教程,全国职称计算机考试专用教程:Excel 2003 中文电子表格(附光盘)...
  2. 独立站需要用到哪些营销手段?
  3. 惯性积计算实例_关于材料力学中惯性矩的认识00
  4. input标签中使输入文本向右偏移像素解决方案(亲测有效)
  5. Leetcode每日一题:454.4sum-ii(四数相加Ⅱ)
  6. HDU - 1087
  7. UWP 流畅设计中的光照效果(容易的 RevealBorderBrush 和不那么容易的 RevealBackgroundBrush)...
  8. 用WPF实现在ListView中的鼠标悬停Tooltip显示
  9. 第十一:Pytest进阶之conftest.py
  10. php new static,PHP中new static()与new self()的区别异同分析