Java注解

Part1:注解的作用和意义

1.注解本没有任何意义,单独的注解就是一种注释,它需要结合其它如反射、插桩等技术才有意义

2.Java注解(Annotation)又称Java标注,是JDK1.5引入的一种注解机制。是元数据的一种形式,提供有关与程序属于程序本身的数据。注解对他它们注解的代码的操作并没有直接影响。

3.注解分为:元注解,内置注解,自定义注解

Part2:元注解

在定义注解时,注解类也能够使用其它的注解声明。在JDK1.5中提供了用来对注解类型进行注解的注解,我称之为meta-annotation,也就是元注解

@Target注解 : 用于声明注解允许作用于哪些节点(是变量域,方法,参数等)

@Retention注解:用于保留级别
RetentionPolicy.SOURCE 标记注解仅保留在源级别中,并被编译器忽略
RetentionPolicy.CLASS 标记注解在编译时由编译器保留,但Java虚拟机会忽略
RetentionPolicy.RUNTIME 标记注解由JVM保留,因此运行时环境可以使用它
SOURCE < CLASS < RUNTIME ,即CLASS包含了SOURCE,RUMTIME 包含了SOURCE,CLASS
面试:注解生命周期:SOURCE,CLASS,RUNTIME

@Document 表示是否将我们的注解生成在JavaDoc中

@Inherited 表示子类可以继承父类注解

Part3:注解的应用场景

根据注解的保留级别不同,对注解的使用自然存在不同的场景

字节码增强:

字节码增强技术相当于是一把打开运行时JVM的要是,利用它可以动态地对运行的程序做修改,也可以跟踪JVM运行中的程序的状态。此外,我们平时使用的动态代理,AOP也与字节码增强密切相关,它们实质上还是利用各种手段生成或者修改符合规范的字节码文件。综上所述,掌握字节码增强后可以高效地定位并快速修复一些棘手的问题(如线上性能问题,方法出现不可控的出入参需要紧急加日志等问题),也可以在开发中减少冗余代码,大大提高开发 效率
参考博客:https://tech.meituan.com/2019/09/05/java-bytecode-enhancement.html

posted @ 2022-01-21 00:54  Shzy  阅读(47)  评论(0编辑  收藏  举报