今天拿SpringAOP和自定义注解的通用性开🔪

简介: SpringAOP和自定义注解的通用性

🍁 作者:知识浅谈,CSDN签约讲师,CSDN原力作者,后端领域优质创作者,热爱分享创作

💒 公众号:知识浅谈

📌 擅长领域:全栈工程师、爬虫、ACM算法

🔥  联系方式vx:zsqtcc

正菜来了🛴🛴🛴

🎈启发

SpringAOP可以帮助我们Java在不修改源代码的前提下实现功能增强,其底层实现基于Java 动态代理或者cglib。由于Spring的声明式事务注解@Transactional的启发,我们在项目中利用自定义的注解实现大量共性的需求。

🎈应用场景

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

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

🎈开发过程

引入依赖📃

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

自定义注解📃

新建Spring Boot2.x工程,在pom.xml中增加aspectjweaver依赖

packagecom.example.springbootdemo.Tets;
importjava.lang.annotation.ElementType;
importjava.lang.annotation.Retention;
importjava.lang.annotation.RetentionPolicy;
importjava.lang.annotation.Target;
//注解用在方法上@Target(ElementType.METHOD)
//@Retention作用是定义被它所注解的注解保留多久额,RUNTIME运行时,就是这个注解的存活时间@Retention(RetentionPolicy.RUNTIME)
public@interfaceAnnotationTest {
}

自定义切面📃

//下边的这个注解表示当前对象是一个切面@Aspect@Component@Slf4jpublicclassMethodExporterAspect {
//关键代码3:说明切面的作用范围,任何增加@AnnotationTest的目标方法都将在执行该切面方法//@Around环绕通知,最强大的通知类型,可以控制方法入参,执行,返回结果等各方面细节@Around("@annotation(com.example.springbootdemo.Tets.AnnotationTest)") //这表示AnnotationTest注解修饰的方法使用这个自定义切面进行增强publicObjectmethodExporter(ProceedingJoinPointjoinPoint) throwsThrowable{
longtime=newDate().getTime();
//执行目标方法,获取方法返回值Objectproceed=joinPoint.proceed();
longet=newDate().getTime();
returnproceed;
    }
}

测试切面📃

@RestControllerpublicclassSampleController {
@AnnotationTest@GetMapping("/list")
publicMaplist(){
HashMap<Object, Object>map=newHashMap<>();
map.put("code","0");
returnmap;
    }
}

网络异常,图片无法展示
|

相关文章
|
6月前
|
缓存 算法 安全
Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的
Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的
92 0
|
6月前
|
Java Spring
Spring5源码(43)-@Transactional声明式事物(一)事物管理步骤简析
Spring5源码(43)-@Transactional声明式事物(一)事物管理步骤简析
49 0
|
30天前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
6月前
|
JSON 前端开发 Java
数据映射框架之三大神器:反射、注解、动态代理
数据映射框架之三大神器:反射、注解、动态代理
56 3
数据映射框架之三大神器:反射、注解、动态代理
|
6月前
|
XML Java 数据格式
简单上手SpringBean的整个装配过程
在Spring6中定义一系列独立的bean定义出发,进而构建出一个对象间相互协作以达成目标的完全成型的应用程序。
47 2
|
6月前
|
Java
SpringAop切面编程(一看就会用)
SpringAop切面编程(一看就会用)
24 0
|
Java Spring 容器
Spring框架:第六章:注解功能
Spring框架:第六章:注解功能
121 0
Spring框架:第六章:注解功能
|
开发框架 自动驾驶 前端开发
使用Spring框架能带来哪些好处?
使用Spring框架能带来哪些好处?
使用Spring框架能带来哪些好处?
|
Java Spring
@Transactional注解在类上还是接口上使用,哪种方式更好?
@Transactional注解在类上还是接口上使用,哪种方式更好?
937 0