自定义注解的应用

Posted 异想天开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义注解的应用相关的知识,希望对你有一定的参考价值。

     在项目中经常会用到自定义注解,下面列举二个使用自定义注解的案例。

一、利用自定义注解打印接口调用时长日志

#创建ServiceLog类用来自定义注解
@Retention(RetentionPolicy.Runtime)
@Target(ElementType.METHOD)
public @interface ServiceLog {

}

#定义ServiceLogAspect类用来定义日志打印信息

@Component
@Aspect 
public class ServiceLogAspect {

   public ThreadLocal<Long> local = new ThreadLocal<Long>();
   
   @Pointcut("@annotation(com.test.XXX.ServiceLong)")
   public void pointCut() {
    
   } 

   @Before("pointCut()")
   public void before(JoinPoint point) {
    String methodName = point.getTarget().getClass().getName()+"."+point.getSignature().getName();
    local.set(System.currentTimeMillis());
   }

  @After("pointCut()")
   public void after(JoinPoint point) {
    long start = local.get();
    String methodName = point.getTarget().getClass().getName()+"."+point.getSignature().getName();
    System.out.println(System.currentTimeMillis()-start));
    }
   
  @AfterThrowing(pointcut="pointCut()",throwing="error")
   public void throwing(JoinPoint point,Throwable error) {
    System.out.println("error");
    }

}

 完成上述定义,如果需要记录方法调用时长时,可以直接使用@ServiceLog注解。

以上是关于自定义注解的应用的主要内容,如果未能解决你的问题,请参考以下文章

自定义注解的实现

[杂记]自定义注解以及反射的应用

java自定义注解

java自定义注解

VSCode自定义代码片段——CSS选择器

Java注解教程:自定义注解示例,利用反射进行解析