Exemple d'utilisation :
Je veux mettre sur les champs de classe une annotation personnalisée @MyContainer et ensuite ajouter automatiquement sur tous ces champs les annotations Hibernate pertinentes (en fonction du type de champ et des propriétés).
En outre, je dois ajouter l'annotation JAXB XmlType à la classe et baser le nom du type sur le nom de la classe.
Je voudrais en outre ajouter des annotations aux champs en fonction de leurs types, etc. Toutes les annotations ajoutées doivent être disponibles au moment de l'exécution (pour qu'Hibernate / JAXB puisse les trouver).
Je suis au courant des options suivantes :
- Pré-traitement de la source de la classe (mauvaise option)
- Traitement pendant la compilation avec les API de javax.annotation.processing
- Manipulation après compilation avec des outils tels que Java Assist
- Manipulation pendant le chargement des classes avec les API java.lang.instrument
- Le faire avec AspectJ (pas assez puissant)
Mes principaux objectifs sont :
- Garder la synchronisation entre la classe et la source pour le débogage
- Prise en charge du travail à partir de Maven et de l'IDE (Eclipse / Intellij)
J'apprécierais que les personnes qui ont déjà fait ce genre de choses puissent recommander la meilleure approche pour une telle tâche (et peut-être les pièges potentiels).