小编典典

Spring AOP-为什么我需要AspectJWeaver?

java

我用Spring
AOP写了一个非常简单的Aspect。它有效,但是我在理解实际情况时遇到了一些问题。我不明白为什么我必须添加Aspectjweaver.jar?Spring-
AOP文档明确指出,只要我仅使用Spring-AOP,就不需要AspectJ编译器或weaver:

但是,AOP运行时仍然是纯Spring AOP,并且不依赖于AspectJ编译器或编织器。

我的配置如下所示:

<aop:aspectj-autoproxy />

@Aspect
@Service
public class RemoteInvocationAspect {

    @Before("execution(* at.test.mypackage.*.*(..))")
    public void test() {
        System.out.println("test");
    }
    ...

我也尝试了XML配置,但是没有做任何更改。也许我可以放手,但是我真的很想了解为什么要使用AspectJ-
Weaver?如果我不在Maven中添加依赖项,我会得到 java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException


阅读 4838

收藏
2020-10-18

共1个答案

小编典典

我认为Spring AOP实现正在重用AspectJ-Weaver中的某些类。它仍然使用动态代理-不进行字节码修改。

春季论坛的以下评论可能会澄清。

在这种情况下,Spring不使用AspectJ编织器。它只是在重用aspectjweaver.jar中的某些类。

-Ramnivas

2020-10-18