Przykład użycia:
Chcę umieścić w polach klasy niestandardową adnotację @MyContainer, a następnie automatycznie dodać na wszystkich takich polach odpowiednie adnotacje Hibernate (w zależności od typu pola i właściwości).
Dodatkowo muszę dodać adnotację XmlType JAXB do klasy i oprzeć nazwę typu na nazwie klasy.
Chciałbym dodatkowo dodać adnotacje do pól w oparciu o ich typy itp. Wszystkie dodane adnotacje powinny być dostępne w czasie wykonywania (więc hibernacja/JAXB może je znaleźć).
Zdaję sobie sprawę z następujących opcji:Dodawanie programowych adnotacji do klasy Java
- Pre-processing źródło klasy (zła opcja)
- Processing podczas kompilacji z javax.annotation.processing API
- postu manipulacji kompilacji przy użyciu narzędzi takich jak Java Pomagają
- Manipulacja klasy podczas załadunku z java.lang.instrument API
- robi to z AspectJ (nie wystarczająco silne)
Moje główne cele to:
- zachować synchronizację między klasą i źródło do debugowania
- obsługują działa zarówno Maven i Eclipse IDE (/ IntelliJ)
Będę wdzięczny, jeśli ludzie, którzy już zrobione takie rzeczy mogą zalecić najlepsze podejście do takiego zadania (i być może potencjalne pułapki).
A co z brakiem generowania adnotacji, ale zamiast generowania plików XML mapowania hibernacji (hbm.xml), które można załadować za pomocą konfiguracji hibernacji? – Strelok
Dzięki, to jest dobry pomysł, ale wolę opcję adnotacji w moim przypadku, ponieważ muszę generować adnotacje JAXB (i być może inne w przyszłości). –