gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 02:16:03 36 4
gpt4 key购买 nike

既可以使用@AspectJ注解方式来定义方面,也可以使用AspectJ Java扩展语言,这需要我们使用ajc编译器。

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

有人可以就这个话题给我讲讲吗?

最佳答案

这两种样式(.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)的切入点引用,并清楚地了解正在发生的“魔法”。

关于java - AspectJ - 为什么使用注释而不是 ajc 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6102746/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com