Voici un exemple de la façon dont vous pouvez définir un aspect utilisant des annotations:Comment définir un aspect intérieur config ressort à l'aide de la configuration java ne
@Aspect
public class BlaBla() {
@Pointcut(...)
...
@Before(...)
...
@After(...)
...
}
Ceci est la seule façon que j'ai trouvé par la recherche. Cependant je veux que la classe BlaBla ne soit pas polluée avec des annotations et des méthodes pointcut. Je veux qu'il reste un POJO. Si je devais utiliser la configuration de printemps xml, je pouvais le faire facilement:
<bean id="blaBla" class="BlaBla">...</bean>
<aop:config>
<aop:aspect ref="blaBla">
<aop:pointcut .../>
<aop:before .../>
<aop:after .../>
</aop:aspect>
</aop:config>
Cependant, je ne suis pas en utilisant la configuration XML, mais une configuration Java à la place. Fondamentalement la question est, comment puis-je dire au printemps que la classe BlaBla est un aspect sans changer la classe BlaBla elle-même, mais plutôt de le définir dans une classe java annotée avec @Configuration
annotation de printemps.
Le principe de l'AOP ist à modulariser une préoccupation transversale - appelé un aspect - dans un endroit comme vous modularisation une préoccupation centrale dans une classe. Pourquoi voulez-vous le déchirer du tout? Je n'ai jamais compris cette approche. Votre premier exemple de code dit tout: "Ceci est un aspect BlaBla, contenant les pointcuts et les conseils suivants, etc." Ce que vous voulez n'a tout simplement pas de sens IMO. Conserver des aspects liés à l'aspect dans un aspect, pas séparément de celui-ci. Pourquoi chercher à deux endroits en essayant de comprendre la logique de l'aspect? – kriegaex
Parce que BlaBla est aussi un haricot. Je pourrais théoriquement vouloir l'utiliser comme aspect pour un ensemble d'interfaces et en même temps l'injecter dans une autre classe et l'utiliser d'une manière différente. Dans ce cas, je ne voudrais pas que mon bean ait une méthode pointcut publique parce qu'elle ne fait pas partie de ce que cet objet est au sens commercial. Cela semble aussi plus découplé pour moi personnellement. Comme si je serais plus en sécurité. Et si plus tard, je décidais d'utiliser BlaBla de manière non-aop. Dans ce cas, je voudrais juste supprimer les configurations et ne pas le toucher du tout. –
Je n'achète pas vos arguments, mais bonne chance à vous de toute façon. – kriegaex