Добавление программных аннотаций к классу Java

Пример использования:
Я хочу поместить в поля класса пользовательскую аннотацию @MyContainer, а затем автоматически добавить во все такие поля соответствующие аннотации Hibernate (в зависимости от типа и свойств поля ).
Кроме того, мне нужно добавить аннотацию JAXB XmlType к классу и основать имя типа на имени класса.
Я хотел бы дополнительно добавить аннотации к полям на основе их типов и т.д. Все добавленные аннотации должны быть доступны во время выполнения (, чтобы hibernate/JAXB могли их найти ).
Мне известны следующие варианты:

  1. Предварительно -источник класса обработки (неверный вариант)
  2. Обработка во время компиляции с помощью API javax.annotation.processing
  3. Обработка после компиляции с помощью таких инструментов, как Java Assist
  4. Манипуляции во время загрузки классов с помощью API java.lang.instrument
  5. Выполнение этого с помощью AspectJ (недостаточно мощно)

Мои основные цели:

  1. Сохраняйте синхронизацию между классом и источником для отладки
  2. Поддержка работы как из Maven, так и из IDE (Eclipse/Intellij)

Я буду признателен, если люди, которые уже делали такие вещи, могут порекомендовать лучший подход для такой задачи (и, возможно, потенциальные ловушки ).

7
задан Avner Levy 25 July 2012 в 06:18
поделиться