springboot实现对注解的切面案例
程序员文章站
2022-06-15 11:47:14
对注解实现切面案例:(1)定义一个注解@target(elementtype.method)@retention(retentionpolicy.runtime)public @interface m...
对注解实现切面案例:
(1)定义一个注解
@target(elementtype.method) @retention(retentionpolicy.runtime) public @interface myannotation { string getvalues() default "test annotation"; }
@target(elementtype.method)
表示该注解作用在方法上(type表示类上,field表示成员变量上)
@retention(retentionpolicy.runtime)
表示该注解的作用范围,由于需要在运行时能够识别到该注解,所以是runtime(source表示源码层面上,即编译成.class时看不见该注解,而class可以,但是在运行时看不到)
(2)编写对注解的切面
(只是记录的执行时间和打印方法,可以实现其他逻辑)
@aspect @component @slf4j public class myaspect { // value也可以写成value = "(execution(* com.sj..*(..))) && @annotation(zkdistributelock)" @around(value = "@annotation(myannotation)", argnames = "proceedingjoinpoint, myannotation") public object processtest(proceedingjoinpoint proceedingjoinpoint, myannotation myannotation) throws throwable { long begintime = system.currenttimemillis(); // 获取方法参数 object[] args = proceedingjoinpoint.getargs(); // 执行方法 object res = proceedingjoinpoint.proceed(args); long time = system.currenttimemillis() - begintime; methodsignature signature = (methodsignature) proceedingjoinpoint.getsignature(); string classname = proceedingjoinpoint.gettarget().getclass().getname(); string methodname = signature.getname(); log.info("注解上的值:{}", myannotation.getvalues()); log.info("执行时间:{}", time); log.info("执行类和方法:{} {}", classname, methodname); return res; } }
(3)测试
@getmapping("/go") @myannotation(getvalues = "success") public string test1() { return "hello world"; }
执行结果:
注解上的值:success
执行时间:8
执行类和方法:com.***.testcontroller test1
到此这篇关于springboot实现对注解的切面案例的文章就介绍到这了,更多相关springboot实现对注解的切面内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
浅谈基于SpringBoot实现一个简单的权限控制注解
-
Java通过注解和反射 实现模拟 Hibernate Validator验证框架对实体对象的字段验证功能
-
SpringBoot使用validation-api实现对枚举类参数校验的方法
-
Springboot自定义注解实现简单的接口权限控制,替代Shiro/SpringSecurity
-
springboot aop 自定义注解方式实现一套完善的日志记录(完整源码)
-
SpringBoot @Validated注解实现参数分组校验的方法实例
-
springboot使用hibernate validation对参数校验的实现方法
-
浅谈java运用注解实现对类中的方法检测的工具
-
SpringBoot 03——深入SpringBoot底层源码架构分析引导类注解的具体实现
-
SpringBoot中自定义注解实现参数非空校验的示例