由于blog各种垃圾评论太多,而且本人审核评论周期较长,所以懒得管理评论了,就把评论功能关闭,有问题可以直接qq骚扰我

SpringAOP与自定义注解实现共性需求

JAVA 西门飞冰 478℃
[隐藏]

1.说明

本文档根据B站UP主分享内容整理,视频原版连接:【IT老齐140】非常实用!Spring AOP与自定义注解实现共性需求

2.介绍

Spring AOP可以帮助我们Java在不修改源代码的前提下实现功能增强,其底层实现基于Java动态代理 或者CGLIB。

以往我们使⽤execution选定具体利⽤AOP扩展哪些类

@Around(value = "execution(* com.fblinux.aop.controller.HelloController.hello(..));")

但是这样使⽤⾮常不方便,因为并不是所有方法都需要被切面增强,往往是今天需要新写了一个方法需要被切面增强,明天又写了一个方法需要被切面增强。针对这种情况,在项目中一般使用自定义注解+AOP实现共性需求

3.应用场景

需要灵活使用共性需求的地方都可以使用该方案

  • 收集上报指定关键方法的入参,执行时间,返回结果等关键信息,用作后期的调优。
  • 关键方法在幂等性的前置校验(基于本地消息表)
  • 类似于 Spring-Retry 模块,提供关键方法多次调用重试机制
  • 提供关键方法自定义的快速熔断,服务降级等职责
  • 关键⽅法的共性⼊参校验
  • 关键方法在执行后的扩展行为,利如记录日志,启动其他任务等。

4.开发过程

(1)新建SpringBoot 工程,引入依赖包

<!--主要是用于创建AOP切面的使用-->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactI