// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= NetBeans IDE 中的标注处理程序支持
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDE 中的标注处理程序支持 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDE 中的标注处理程序支持

_样例撰稿人：Jesse Glick。_



image::images/netbeans-stamp-80-74-73.png[title="此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0"]

此教程包含两部分，演示了当您在 IDE 中处理代码时如何将标注处理程序附加到项目中以及如何使用它们。NetBeans IDE 包括对定制标注处理程序的内置支持。现在，可以通过代码完成和导航非常方便地指定要与项目一起运行的标注处理程序，并可以直接在 Java 编辑器中查看标注处理的结果。

link:annotations-lombok.html[+教程的第一部分+]演示了如何在 NetBeans IDE 中使用第三方标注处理程序 link:http://projectlombok.org/[+Project Lombok+]。

link:annotations-custom.html[+教程的第二部分+]说明如何将自创的标注处理程序添加到项目中。此部分的样例代码由 Jesse Glick 撰写。

*要学完本教程，您需要具备以下软件和资源。*

|===
|软件或资源 |要求的版本 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2, 7.3, 7.4, 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java 开发工具包 (JDK)+] |版本 7 或 8 
|===


== 简介

_标注_是 Java 编程语言的一种机制，用于保存与应用程序的元素有关的元数据。在部署期间或在运行时，标注保存有关编译器应如何处理已标注元素的 meta 信息。换言之，标注是其他程序和工具可以处理的代码的注释。

可以使用定制标注完成多种任务：标记应用程序的各个部分（如版权信息、测试方法等）、自动生成代码、解析命令行选项和开发 Web 服务等。有关应该如何处理定制标注的信息通过定制标注处理程序来传递到 Java 编译器。JDK 6 中实现的 link:http://www.jcp.org/en/jsr/detail?id=269[+JSR 269+] 为编写标注处理程序提供了一个正式 API。可以编写自己的定制标注处理程序或使用第三方解决方案。

有关 JDK 6 中标注的入门信息，请参见下列资源：

* Java SE 文档 - link:http://download.oracle.com/javase/6/docs/technotes/guides/language/annotations.html[+标注+]
* Java SE 教程 - link:http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html[+标注+]

实际上，标注最广泛的用法是与 Java 持久性 API (JPA) 一起使用，后者是 Java EE 规范及一些其他技术（例如 JAXB，即 Java Architecture for XML Binding）的一部分。使用 JPA，可以将 Java 类作为实体进行标注，这些实体随后会保存到存储器中。要开发基于 JPA 的应用程序，使用框架（例如：与 IDE 捆绑在一起的 EclipseLink）会非常方便。若要开始了解有关在 NetBeans IDE 中编写基于 JPA 的应用程序的详细信息，请参见 link:../javaee/javaee-gettingstarted.html[+Java EE 应用程序入门指南+]。


== 用于标注处理的 Javac 选项和 IDE 命令的映射

如上所述，为了使 Java 编译器的功能完整，在 Java SE 6 Javac 中已包含了标注。默认情况下，编译器自动在用户类路径下搜索标注处理程序（除非已明确禁用标注处理）。此外，可以使用 Javac 选项指定搜索路径或特定标注处理程序的路径。在下表中，可以看到与标注处理相关的 javac 选项和 IDE 中相应命令的映射。有关 JDK 6 中 Javac 选项的详细信息，请参见 link:http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html[+javac - Java 编程语言编译器+]。

*注：*在 IDE 中，除 NetBeans 平台应用程序之外的所有 Java 应用程序的标注处理选项在 "Project Properties"（项目属性）窗口中指定。要打开项目的“属性”窗口，请右键单击项目，然后选择“属性”。

|===
|Java 6 javac 选项 |IDE 命令 |描述 

| ``-processor``  |

“项目属性”>“构建”>“编译”>“标注处理程序”字段。

在“标注处理程序”字段中指定标注处理程序的完全限定名。

 |明确指定要运行的标注处理程序。此选项消除了创建服务提供器配置文件 (META-INF/services/javax.annotation.processing.Processor) 的要求 

| ``-proc:none``  |

“项目属性”>“构建”>“编译”>“启用标注处理”复选框

如果禁用此复选框，则在不进行任何标注处理的情况下编译项目。

 |编译过程不进行任何标注处理。编译期间，不使用标注处理程序发现机制。 

| ``-processorpath``  |

“项目属性”>“库”>“处理程序”标签

指定到 IDE 项目、库或含有标注处理程序的 JAR 文件的路径。如果标注处理程序和标注分别打包到单独的 JAR 文件，则使用此选项。

 |指定查找标注处理程序的位置；如果未给出此选项，则在类路径下搜索处理程序（请参见以下内容）。 

| ``-classpath``  |

“项目属性”>“库”>“编译”标签

指定到 IDE 项目、库或含有标注处理程序和标注声明的 JAR 文件的路径。如果标注处理程序和标注被打包到一个 JAR 文件，则使用此选项。

 |指定查找用户类、（可选）标注处理程序和源文件的位置。如果没有指定 -processorpath 选项，请在此路径下搜索标注处理程序。 

| ``-A_key[=value]_``  |

“项目属性”>“构建”>“编译”>“处理程序选项”字段

添加应该传递到与项目相关联的标注处理程序的选项。本值为可选。

 |（可选）要传递到标注处理程序的选项。 
|===

 


== 后续步骤

阅读本教程的下列部分可了解如何在 IDE 中使用标注。

* link:annotations-lombok.html[+第一部分：使用支持定制标注的 Project Lombok+]
* link:annotations-custom.html[+第二部分：在 IDE 中使用自己的定制标注处理程序+]

link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20the%20Annotation%20Processors%20Support%20in%20the%20NetBeans%20IDE[+发送有关此教程的反馈意见+]
