Java 学习之路 之 编译时处理Annotation(六十二)

APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的 Annotation 后,对 Annotation 进行额外的处理。

Annotation 处理器在处理 Annotation 时可以根据源文件中的 Annotation 生成额外的源文件和其他的文件(文件的具体内容由 Annotation 处理器的编写者决定).APT 还会编译生成的源代码文件和原来的源文件,将它们一起生成 class 文件。

使用 APT 的主要目的是简化开发者的工作量,因为 APT 可以在编译程序源代码的同时生成一些附属文件(比如源文件、类文件、程序发布描述文件等),这些附属文件的内容也都与源代码相关。换句话说,使用 APT 可以代替传统的对代码信息和附属文件的维护工作。

了解过 Hibernate 早期版本的读者都知道:每写一个 Java 类文件,还必须额外地维护一个 Hibernate 映射文件(名为*.hbm.xml 的文件,也有一些工具可以自动生成)。下面将使用 Annotation 来简化这步操作。

不知道 Hibernate 的读者也无须担心,你只需要明白我们要做什么即可——我们可以在 Java 源文件中放置一些 Annotation,然后使用 APT 工具就可以根据该 Annotation 生成另一份 XML 文件,这就是 Annotation 的作用。

Java 提供的 javac.exe 工具有一个 -processor 选项,该选顼可指定一个 Annotation 处理器,如果在编译 Java 源文件时通过该选项指定了 Annotation 处理器,那么这个 Annotation 处理器将会在编译时提取并处理 Java 源文件中的 Annotation。

每个 Annotation 处理器都需要实现 javax.annotation.processing 包下的 Processor 接口。不过实现该接口必须实现它里面所有的方法,因此通常会采用继承 AbstractProcessor 的方式来实现 Annotation 处理器。一个 Annotation 处理器可以处理一种或者多种 Annotation 类型。

为了示范使用 APT 根据源文件中的注释来生成额外的文件,下面将定义 3 种 Annotation 类型,分别用于修饰持久化类、标识属性和普通成员属性。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
@Documented
public @interface Persistent
{
    String table();
}

这是一个非常简单的 Annotation,它能修饰类、接口等类型声明,这个 Annotation 使用了 @Retention 元数据注释指定它仅在 Java 源文件中保留,运行时不能通过反射来读取该 Annotation 信息。

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.SOURCE)
@Documented
public @interface Id
{
	String column
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值