对注解实现切面案例:
@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可以,但是在运行时看不到)
(只是记录的执行时间和打印方法,可以实现其他逻辑)
@aspect@component@slf4jpublic class myaspect { // value也可以写成value = "(execution(* com.sj..*(..))) &隐蔽的反义词;& @annotation(zkdistributelo失恋qq个性签名ck)" @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, met那天我回家晚了作文hodname); return res; }}
@getmapping("/go")@myannotation(getvalues =自然与人文 "success")public string test1() { return "hello world";}
执行结果:
注解上的值:success
执行时间:8
执行类和方法:com.***.testcontroller test1
到此这篇关于springboot实现对注解的切面案例的文章就介绍到这了,更多相关spri药家ngboot实现对注解的切面内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 13:04:58,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/3293cdb5c8503366445e595145adaf9b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:springboot实现对注解的切面案例.doc
本文 PDF 下载地址:springboot实现对注解的切面案例.pdf
留言与评论(共有 0 条评论) |