java – AspectJ – 为什么使用注释而不是ajc编译器?

我们可以使用@AspectJ注释样式来定义方面,以及AspectJ Java扩展语言,这需要我们使用ajc编译器.

人们想要使用注释样式而不是ajc的原因是什么?在我看来,通过使用注释样式放弃了很多功能,但除了不必使用ajc之外没有太多(如果有的话)获得(不得不使用ajc这么糟糕?)

有人可以请教我这个话题吗?

最佳答案
两种样式(.aj和@AspectJ)都具有另一种不能做的功能.

请参阅这篇文章,了解注释可以做的事情,声明性的AspectJ不能:What is the AspectJ declaritive syntax for overwritting an argument

大部分的.aj文件(除了上面提到的)可以做得更多.
最值得注意的是,他们可以做ITD(Inter-Type-Definitions也称为类添加方法和属性).

您希望使用@AspectJ的最大原因是,如果您使用Spring代理AOP支持,它甚至不需要编译时编织(CTW)甚至加载时间(LTW). Spring将模仿@AspectJ,但在运行时通过创建代理.

我注意到Spring,Eclipse(和我自己)似乎鼓励更多地使用真正的AspectJ.我相信这是因为Eclipse插件已经变得非常好.使用真正的AspectJ和@Configurable注释,您可以在实例化的bean上获得Spring连接.这就是Spring Roo的工作原理.

使用Eclipse AspectJ IDE插件,您可以看到两种样式(@和aj)的切入点引用,并清楚地了解正在发生的“魔法”.

转载注明原文:java – AspectJ – 为什么使用注释而不是ajc编译器? - 代码日志