Аннотации присутствуют во время компиляции, но отсутствуют во время выполнения - PullRequest
1 голос
/ 07 апреля 2010

Можно использовать файлы классов Java, которые содержат аннотации, которых нет во время выполнения?

Пример: я хочу написать класс с аннотацией JPA @Embeddable, который будет присутствовать во время компиляции (область действия maven: «предоставлено»). Но определение аннотации может отсутствовать во время выполнения, если класс используется вне приложения JPA.

Ответы [ 3 ]

0 голосов
/ 07 апреля 2010

Приложения OSGi, например Eclipse, будут игнорировать аннотации, которые недоступны, то есть вы не получите ClassNotFoundExceptions, если у вас есть аннотация JPA без загруженного API JPA.

0 голосов
/ 07 апреля 2010

Для этой конкретной проблемы я бы просто определил отображения ORM в ресурсах XML вместо аннотаций. Эти сопоставления могут быть помещены в другой артефакт (JAR), который будет добавлен (или нет) в путь к классам в зависимости от того, используете вы JPA или нет.

0 голосов
/ 07 апреля 2010

Вы должны либо:

  1. Замена скомпилированных классов во время выполнения (чтобы включить класс без аннотации.)
  2. Переопределить определение класса @Embeddable и удалить @Retention (RUNTIME)
  3. Просто предотвратите сканирование самого класса вашим провайдером JPA.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...