zoukankan      html  css  js  c++  java
  • Java注解(3)注解的原理

    1.注解的声明周期:

    一般如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解,比如@Deprecated使用RUNTIME注解
    如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;
    如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,使用SOURCE 注解。

    2.编译期注解的原理

    由编译期扫描到有@Override等注解的类,在编译器的注解处理器进行代码检查。检查涉及到的原理为APT技术。

    3.运行时注解的原理:

    以Spring中的@Component注解为例:
    所有“继承”了@Component注解接口的注解修饰用户的类,会被Spring中的注解处理器获取(通过getAnonations()).
    判定存在@Component注解后,注解处理器会在spring容器框架中,根据用户类的全限定名,通过java的反射机制创建这个用户类的对象,并放到spring容器框架中进行管理。

    4.注解处理器(Annotation Processor)

    首先来了解下什么是注解处理器,注解处理器是javac的一个工具,它用来在编译时扫描和处理注解(Annotation)。可以自定义注解,并注册到相应的注解处理器,由注解处理器来处理你的注解。
    一个注解的注解处理器,以Java代码(或者编译过的字节码)作为输入,生成文件(通常是.java文件)作为输出。这些生成的Java代码是在生成的.java文件中,所以你不能修改已经存在的Java类,例如向已有的类中添加方法。这些生成的Java文件,会同其他普通的手动编写的Java源代码一样被javac编译。
    自定义注解处理器

  • 相关阅读:
    (四)安装硬件驱动程序
    (三)操作系统安装与更新
    (二)主板BIOS设置与硬盘分区、调整
    通过ip远程控制电脑
    (一)计算机基本组成部分
    计算机与操作系统
    单位换算
    TestDirector(TD)—测试管理工具
    QualityCenter(QC)—测试管理工具
    teamviewer破解版
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/12720839.html
Copyright © 2011-2022 走看看