// 
//     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.
//

= Поддержка обработчиков аннотаций в IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Поддержка обработчиков аннотаций в IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Поддержка обработчиков аннотаций в IDE NetBeans

_Образец предоставлен Джесси Глик (Jesse Glick)._



image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"]

В этом учебном курсе из двух частей демонстрируются способы присоединения обработчиков аннотаций к проекту и их использование при работе над кодом в среде IDE. IDE NetBeans включает встроенную поддержку нестандартных обработчиков аннотаций. Теперь можно указать обработчики аннотаций, которые должны выполняться с проектом, и просмотреть результаты обработки аннотаций непосредственно в редакторе Java при помощи автозавершения и перехода.

В link:annotations-lombok.html[+первой части учебного курса+] описвается использование обработчика аноотаций от сторонних производителей, link:http://projectlombok.org/[+проекта Lombok+] в IDE NetBeans.

Во link:annotations-custom.html[+второй части учебного курса+] приводятся способы добавления собственного обработчика аннотаций в проект. Составитель образца кода для этой части учебного курса - Джесси Глик.

*Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.*

|===
|Программное обеспечение или материал |Требуемая версия 

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

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |версия 7 или 8 
|===


== Введение

_Аннотации_ - это механизм языка программирования Java, используемый для указания метаданных об элементах приложения. Аннотации содержат метаинформацию о способах обработки аннотированных элементов компилятором во время развертывания или выполнения. Иными словами, аннотации – это комментарии к коду, которые могут обрабатываться другими программами и средствами.

Пользовательские аннотации можно использовать для выполнения различных задач: добавления пометок к частям приложения (напр., сведениям об авторских правах, методам тестирования и т. п.), автоматического создания кода, анализа параметров командной строки, разработки веб-служб и т. п. Информация о методах обработки пользовательских аннотаций передается компилятору Java при помощи пользовательских обработчиков аннотаций. link:http://www.jcp.org/en/jsr/detail?id=269[+JSR 269+], реализованный в пакете JDK 6, содержит официальный интерфейс 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[+Аннотации+]

На практике аннотации наиболее широко используются в сочетании с интерфейсом API сохранения состояния Java (JPA), частью спецификации Java EE и другими технологиями, например JAXB (архитектура Java для XML Binding). При помощи JPA можно аннотировать классы Java как сущности, которые впоследствии сохраняются в памяти. Для разработки приложений на основе JPA целесообразно использовать платформы, например, платформу EclipseLink, входящую в состав среды IDE. В качестве начальной точки для получения дополнительных сведений о записи приложений на основе JPA в IDE NetBeans см. раздел link:../javaee/javaee-gettingstarted.html[+Начало работы с приложениями Java EE+].


== Сопоставление параметров javac и команд среды IDE для обработки аннотации

Как уже упоминалось выше, обработка аннотации входит в программу javac из Java SE 6 в качестве неотъемлемой функции компилятора Java. При помощи компилятора по умолчанию выполняется автоматический поиск обработчиков аннотаций по пользовательскому пути поиска классов (если обработка аннотаций не отключена явным образом). Кроме того, можно указать путь поиска или путь к определенным обработчикам аннотаций при помощи параметров Javac. В приведенной ниже таблице приведено сопоставление параметров Javac, связанных с обработкой аннотации, и соответствующих команд в среде IDE. Дополнительные сведения о параметрах Javac в пакете JDK 6 можно найти на странице link:http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html[+Javac - компилятор языка программирования Java+].

*Примечание.* В IDE параметры обработки аннотаций для всех приложений Java за исключением приложений платформы NetBeans указаны в окне 'Свойства проекта'. Чтобы открыть "Свойства проекта", щелкните проект правой кнопкой мыши и выберите "Свойства".

|===
|Параметры Javac Java 6 |Команда среды 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[+Часть I. Использование проекта Lombok для пользовательских аннотаций+]
* link:annotations-custom.html[+Часть II: работа с собственными обработчиками пользовательских аннотаций в среде IDE+]

link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20the%20Annotation%20Processors%20Support%20in%20the%20NetBeans%20IDE[+Отправить отзыв по этому учебному курсу+]
