21xrx.com
2025-04-03 02:48:11 Thursday
文章检索 我的文章 写文章
JAVA自定义注解实现增强
2023-06-12 15:22:40 深夜i     12     0
@interface 进行定义如下所示

在JAVA中,注解是一种在代码中加入元数据信息的方式。通过对元数据的解析,我们可以实现代码的自动化处理,这就是注解的一种应用。本文将介绍如何自定义注解,并通过注解实现对方法的增强。

1. 自定义注解

在JAVA中,注解使用 ,我们定义了一个注解 MyAnnotation,并定义了一个参数 value。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
  String value() default "";
}

此处, @Target 表示该注解可以用于哪些程序元素,这里限定了该注解只能用于方法上。 @Retention 表示该注解的生命周期,这里定义为 运行时 。 value() 为注解参数,并设置了默认值为空字符串。

2. 使用注解实现增强

有了自定义注解后,接下来我们可以通过注解实现方法增强。例如,我们可以定义一个增强注解,当方法执行完毕后,自动统计方法的执行时间。如下所示,定义了一个注解 Timing,用于记录方法的执行时间。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Timing

接下来,我们在需要增强的方法上加上 @Timing 注解,实现方法的时间统计。如下所示:

@Timing
public void myMethod()
  // some logic here

在方法 myMethod() 执行完毕后,通过注解处理器解析到 @Timing 注解,此时就可以在注解处理器中插入代码,统计方法的执行时间。

3. 代码案例

下面,我们来看一个简单的代码案例。如下所示,定义了一个类 MyClass,其中包含了方法 myMethod()。

public class MyClass {
  @Timing
  public void myMethod() {
    System.out.println("myMethod executed.");
    try {
      Thread.sleep(1000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}

我们通过自定义注解 @Timing,对方法 myMethod() 进行增强。在注解处理器中,处理 @Timing 注解时,将会统计 myMethod() 方法执行的时间,并打印输出。

public class TimingAspect {
  @Around("@annotation(com.example.demo.annotation.Timing)")
  public Object around(ProceedingJoinPoint point) throws Throwable {
    long start = System.currentTimeMillis();
    Object result = point.proceed();
    long end = System.currentTimeMillis();
    System.out.println("Time consumed in method " + point.getSignature().getName() + ": " + (end - start) + "ms");
    return result;
  }
}

4. 关键词

- JAVA注解

- 自定义注解

- 方法增强

  
  

评论区

    相似文章
请求出错了