2011-05-23 81 views
4

我们既可以使用@AspectJ注释样式来定义方面,也可以使用AspectJ Java扩展语言,这需要我们使用ajc编译器。AspectJ - 为什么使用注释而不是ajc编译器?

想要使用注释样式而不是ajc的原因是什么?在我看来,很多功能是通过使用注释风格放弃的,但是获得的功能并不多(如果有的话),除了不必使用ajc(使用ajc有什么不好之处?)

可以有人请在这个话题上给我启发?

回答

4

两种款式(.aj@AspectJ)都具有其他不能做的功能。

看到这个职位的东西注释可以这样做声明的AspectJ不能:What is the AspectJ declaritive syntax for overwritting an argument

.aj文件大部分(上述以外的)可以做更多的方式。 最值得注意的是他们可以做ITD(类型间定义又称为向类中添加方法和属性)。

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

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

使用Eclipse AspectJ IDE插件,您可以看到对两种样式(@和aj)的切入点引用,并且清楚地知道发生了什么“魔术”。

2

在构建过程中添加一些额外步骤并不是最简单和最好的方法。特别是当你有大项目时。你远离所有的Java工具和IDE支持,它们可能不支持* .aj语法。