ASP教程 PHP教程 JSP教程 CGI教程 XML教程 ASP.NET教程
  • JAVA教程
  • 当前位置:教程 > 程序设计 > JAVA教程 > 正文

    Java Annotation 高级应用

    编辑:教程网 来源:网络 时间:2011年11月07日 16:41
    内容: 版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
    作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)
    原文:http://www.matrix.org.cn/resource/article/44/44062_Java+Annotation+Apt.html
    关键字:java,annotation,apt

    前言:
    前不久在matrix上先后发表了《java annotation 入门》、《java annotation 手册》两篇文章,比较全面的对java annotation的语法、原理、使用三方面进行了阐述。由于《入门》中的简单例程虽然简单明了的说明了annotation用法,但给大家的感觉可能是意犹未见,所以在此行文《java annotation高级应用》,具体实例化解释annotation和annotation processing tool(APT)的使用。望能对各位的有所帮助。

    一、摘要:
    《java annotation高级应用》具体实例化解释annotation和annotation processing tool(APT)的使用。望能对各位的有所帮助。本文列举了用于演示annotation的BRFW演示框架、演示APT的apt代码实例,并对其进行较为深度的分析,希望大家多多提意见。

    二、annotation实例分析
    1.BRFW(Beaninfo Runtime FrameWork)定义:
    本人编写的一个annotation功能演示框架。顾名思义,BRFW就是在运行时取得bean信息的框架。

    2.BRFW的功能:
    A.源代码级annotation:在bean的源代码中使用annotation定义bean的信息;
    B.运行时获取bean数据:在运行时分析bean class中的annotation,并将当前bean class中field信息取出,功能类似xdoclet;
    C.运行时bean数据的xml绑定:将获得的bean数据构造为xml文件格式展现。熟悉j2ee的朋友知道,这个功能类似jaxb。

    3.BRFW框架:
    BRFW主要包含以下几个类:
    A.Persistent类:定义了用于修饰类的固有类型成员变量的annotation。
    B.Exportable类:定义了用于修饰Class的类型的annotation。
    C.ExportToXml类:核心类,用于完成BRFW的主要功能:将具有Exportable Annotation的bean对象转换为xml格式文本。
    D.AddressForTest类:被A和B修饰过的用于测试目的的地址bean类。其中包含了地址定义所必需的信息:国家、省级、城市、街道、门牌等。
    E.AddressListForTest类:被A和B修饰过的友人通讯录bean类。其中包含了通讯录所必备的信息:友人姓名、年龄、电话、住址(成员为AddressForTest类型的ArrayList)、备注。需要说明的是电话这个bean成员变量是由字符串类型组成的ArrayList类型。由于朋友的住址可能不唯一,故这里的住址为由AddressForTest类型组成的ArrayList。
    从上面的列表中,可以发现A、B用于修饰bean类和其类成员;C主要用于取出bean类的数据并将其作xml绑定,代码中使用了E作为测试类;E中可能包含着多个D。
    在了解了这个简单框架后,我们来看一下BRFW的代码吧!

    4.BRFW源代码分析:
    A.Persistent类:
    清单1:

    package com.bjinfotech.practice.annotation.runtimeframework;

    import java.lang.annotation.*;

    /**
    * 用于修饰类的固有类型成员变量的annotation
    * @author cleverpig
    *
    */
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.FIELD)
    public @interface Persistent {
    String value() default "";
    }


    B.Exportable类:
    清单2:

    package com.bjinfotech.practice.annotation.runtimeframework;

    import java.lang.annotation.*;

    /**
    * 用于修饰类的类型的annotation
  • 原文来自 教程网 转载请注明:http://www.websmill.com/chengxu/java/31851.html

  • 上一篇:ehcache 1.2 released
  • 下一篇:没有了