Pour ceux qui ne connaissent pas l'ITD d'AspectJ (Déclaration Inter-Types), cela permet de rajouter des éléments dans les classes via un aspect : attributs; méthodes, annotations, héritage d'interface...Est-ce que je peux m'en servir pour générer des accesseurs dans une bean ?
Pour le savoir, je crée un bean avec un attribut property :
| Code java : | Sélectionner tout |
1 2 3 4 5 6 | public class SampleBean { public String property; } |
La syntaxe est simple : il suffit de préfixer le nom des méthode par le type cible (ici SampleBean) :
| Code java : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | privileged aspect SampleBean_propertyITD { public String SampleBean.getProperty() { System.out.println("SampleBean.getProperty() généré par ITD"); return this.property; } public void SampleBean.setProperty(String value) { System.out.println("SampleBean.setProperty(value) généré par ITD"); this.property = value; } } |
Je crée donc des advices qui peuvent tirer parti de mes méthodes générées par ITD.
Cette fois-ci la syntaxe est un peu plus compliquée mais reste compréhensible :
| Code java : | Sélectionner tout |
1 2 3 4 5 6 7 8 | java.lang.String around(SampleBean instance) : get(java.lang.String SampleBean.property) && target(instance) && ! withincode(java.lang.String SampleBean.getProperty()) { return instance.getProperty(); } void around(SampleBean instance, java.lang.String value) : set(java.lang.String SampleBean.property) && args(value) && target(instance) && ! withincode(void SampleBean.setProperty(*)){ instance.setProperty(value); } |
| Code java : | Sélectionner tout |
1 2 3 4 | SampleBean bean = new SampleBean(); bean.property = "value"; value = bean.property; |
SampleBean.setProperty(value) généré par ITD
SampleBean.getProperty() généré par ITD

Mais heureusement, il y a une solution : générer les aspects. Pour cela je montrerai dans un prochain billet comment utiliser un AnnotationProcessor.
Vous avez lu gratuitement 140 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.