5. 「Java 」江山基础之注解入门

前言:Java注解是一种非常强大的语法元素,可以为我们的程序带来很多便利。然而,在使用注解时,我们往往会遇到一些问题。本篇博客将系统地介绍Java注解的定义、作用、使用方法以及注意事项,帮助大家更好地掌握Java注解,并在实际开发中运用自如。


文章目录

  • 从入门到精通:Java注解详解
    • 前言
    • Java注解是什么?
    • Java注解的作用
    • Java注解的使用方法
      • 定义注解
      • 使用注解
      • 注解元素
      • 注解生命周期
      • 元注解
    • 纸上得来终觉浅
      • 1. 定义注解
      • 2. 实现时间监控
      • 3. 测试时间监控
      • 4. 时间监控小结
    • 注意事项
    • 总结


作者简介:作为某云服务提供商的后端开发人员,我将在这里与大家简要分享一些实用的开发小技巧。在我的职业生涯中积累了丰富的经验,希望能通过这个博客与大家交流、学习和成长。技术栈:Java、PHP、Python、Vue、React


本文收录于三木的 「Java探索者之路」系列专栏,这个专栏旨在引领Java开发者踏上一段真正探索Java世界的旅程。
我们将深入探讨Java编程的方方面面,从基础知识到高级技巧,从实践案例到最新趋势,帮助你成为一名卓越的Java探索者。如果有想进入Java后端领域工作的同学,这个专栏会对你有所帮助,欢迎关注起来呀

「面试」这个专栏的灵感来自于许多粉丝私信,大家向我咨询有关面试的问题和建议。我深感荣幸和责任,希望通过这个专栏,能够为大家提供更多关于面试的知识、技巧和经验。我们将一起探讨面试。期待粉丝们ssp的offer喜讯。

本人也会持续的去关注AIGC以及人工智能领域的一些动向并总结到博客中,大家感兴趣的可以关注一下我的「AI」专栏
「Python爬虫」的入门学习系列,大家有兴趣的可以看一看


一起学习,互三互访,顺评论区有访必回,有关必回!!!


从入门到精通:Java注解详解

前言

Java注解是一种非常强大的语法元素,可以为我们的程序带来很多便利。然而,在使用注解时,我们往往会遇到一些问题。本篇博客将系统地介绍Java注解的定义、作用、使用方法以及注意事项,帮助大家更好地掌握Java注解,并在实际开发中运用自如。

Java注解是什么?

Java注解是一种元数据,它提供了一种在程序中添加元数据的方式,这些元数据可以用于编译时的检查、运行时的检查、代码生成,甚至是代码分析和优化等。

Java注解的作用

Java注解的作用主要有以下方面:

  • 提供编译器额外的代码检查
  • 在运行时进行一些额外的操作
  • 通过代码生成器自动生成代码

Java注解的使用方法

Java注解可以用在类、接口、方法、参数、字段等地方,对于不同的使用场景,使用方法也略有不同。

定义注解

定义注解使用 @interface 关键字。

public @interface MyAnnotation {

}

使用注解

使用注解可以使用 @ 注解名 的方式,在类、接口、方法、参数、字段等地方添加注解。

@MyAnnotation
public class MyClass {

    @MyAnnotation
    private String myField;

    @MyAnnotation
    public void myMethod(@MyAnnotation String myParam) {
        
    }

}

注解元素

注解元素可以理解为注解的属性,在定义注解时,可以为注解添加元素。

public @interface MyAnnotation {

    String name();

    int age();

}

使用注解时,必须为元素赋值。

@MyAnnotation(name = "张三", age = 18)
public class MyClass {

}

注解生命周期

Java注解可以有三种生命周期:

  • 源码级别:注解只在源码中存在,编译时会被丢弃
  • 编译时:注解在编译时被保留,但不会包含在编译后的class文件中
  • 运行时:注解在运行时被保留,并且可以通过反射机制读取

指定注解生命周期可以使用 @Retention 注解。

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

}

元注解

元注解是指用于注解其他注解的注解。Java中定义了4个元注解,分别是 @Retention、@Target、@Documented、@Inherited。

  • @Retention:用于指定注解的生命周期
  • @Target:用于指定注解可以应用的元素类型
  • @Documented:用于指定注解是否包含在JavaDoc中
  • @Inherited:用于指定注解是否可以被继承

纸上得来终觉浅

下面我将用一个简单的例子来演示如何使用Java注解如何在spring 中实现时间监控。

好的,下面我将用一个简单的例子来演示如何使用Java注解实现时间监控。

我们通过注解来标记要进行时间监控的方法,然后在方法调用的前后获取时间差,进而实现时间监控的功能。

1. 定义注解

首先,我们需要定义一个注解来标记要进行时间监控的方法。这个注解可以命名为 @TimeMonitor。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TimeMonitor {
}

上面的代码中,我们定义了一个只能用在方法上的注解,注解名称为 @TimeMonitor。

2. 实现时间监控

我们创建一个 TimeMonitorAspect 类,并使用 AspectJ 提供的 @Aspect 注解来标记这是一个切面类。然后,在这个类中,我们定义一个环绕通知方法 timeMonitor,用来进行时间监控。

在 timeMonitor 方法中,我们首先获取当前方法调用的时间,然后执行方法本身,最后再获取方法执行完成后的时间。通过计算这两个时间差,我们就可以得出该方法的执行时间了。

@Aspect
public class TimeMonitorAspect {

    @Around("@annotation(com.example.annotationdemo.TimeMonitor)")
    public Object timeMonitor(ProceedingJoinPoint joinPoint) throws Throwable {
        long startTime = System.currentTimeMillis();
        Object result = joinPoint.proceed();
        long endTime = System.currentTimeMillis();
        System.out.println(joinPoint.getSignature() + " 方法执行时间:" + (endTime - startTime) + "ms");
        return result;
    }

}

3. 测试时间监控

最后,我们创建一个测试类 TestTimeMonitor,用来测试时间监控的效果。

在这个类中,我们定义了两个方法,其中的注解 @TimeMonitor 就是用来标记进行时间监控的方法。

public class TestTimeMonitor {

    @TimeMonitor
    public static void method1() throws InterruptedException {
        Thread.sleep(100);
    }

    @TimeMonitor
    public static void method2() throws InterruptedException {
        Thread.sleep(200);
    }

    public static void main(String[] args) throws InterruptedException {
        method1();
        method2();
    }

}

当我们运行 TestTimeMonitor 的 main 方法时,控制台输出的内容应该如下所示:

void com.example.annotationdemo.TestTimeMonitor.method1() 方法执行时间:100ms
void com.example.annotationdemo.TestTimeMonitor.method2() 方法执行时间:200ms

从输出的结果中,我们可以看到通过使用 @TimeMonitor 注解,我们成功地实现了时间监控的功能。

4. 时间监控小结

通过这个简单的例子,我们可以看到使用 Java 注解可以极大地方便我们对程序进行更细致的控制和管理,实现类似时间监控的功能非常简单。

注意事项

在使用Java注解时,需要注意以下事项:

  • 注解不能够继承其他的类或者注解
  • 注解的元素必须要有值
  • 注解中元素的类型只能是基本类型、String、Class、枚举类型、注解类型以及以上类型的数组
  • 注解中元素的默认值需要使用 default 关键字指定

总结

Java注解是一种非常强大的语法元素,它可以为我们带来很多便利,但在使用注解时也需要注意一些事项。希望通过本篇博客,大家能够更好地掌握Java注解的定义、作用、使用方法以及注意事项,并在实际开发中运用自如。

你可能感兴趣的:(Java探索者之路,java,开发语言)