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编译。
    自定义注解处理器

  • 相关阅读:
    nginx实现请求的负载均衡 + keepalived实现nginx的高可用
    nginx的location配置详解
    nginx负载均衡算法
    nginx实现集群高可用
    Nginx:承受3万并发连接数,胜过Apache 10倍
    编程高手与调试高手
    Android 中调试手段 打印函数调用栈信息
    android 中打 Log 的一些技巧
    Java程序员应该知道的10个调试技巧
    Camera中对焦模式总结
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/12720839.html
Copyright © 2011-2022 走看看