0

可能重复:
Spring AOP vs AspectJ

我正在阅读弹簧参考文档。其中写着

  1. 如果您需要字段访问和更新连接点,请考虑使用 AspectJ 等语言。
  2. 有些事情你不能用 Spring AOP 做,例如建议非常细粒度的对象(例如域对象),AspectJ 是使用它的最佳案例。
  3. 什么是 AspectJ 编译器或编织器?

我没有理解以上三点的含义,因此感到困惑。请用简单的例子详细说明。

4

3 回答 3

3

AFAIK Spring AOP 不支持 AspectJ 的所有功能,但仅支持有限的一组。例如,Spring AOP 仅支持方法级别的切入点,因此如果您想要细粒度的控制(即字段级别),您需要在本机使用 AspectJ。

于 2012-07-27T09:54:43.813 回答
2

您的第一点只是表明您只能在方法级别应用切入点,spring-aop 中未实现字段拦截。

下一点告诉您不能在域对象(它们是简单的 pojo 实体)上添加建议,

最后是关于编织,编织是将Aspects以JavaBean的方式连接到spring XML文件中的对象中。或者简单地说,编织是将新的字节码添加到您的 java 类以使其可用于框架。

于 2012-07-27T11:37:18.620 回答
0

还有更重要的区别 - AspectJ 可以在编译时注入 AOP 东西(例如,使用 aspectj maven 插件),根据 spring 的版本,spring AOP 只能在运行时使用 cglib 或 javasist。然而,通常你还是更喜欢 spring AOP - 只是因为它更容易......

于 2012-07-27T11:09:15.177 回答