当前位置: 首页 > 知识库问答 >
问题:

AOP中调用和执行的区别

商昆琦
2023-03-14

我试图尽可能简单地理解AOP中执行和调用之间的区别。据我所知,execution()将在执行代码中添加一个连接点,因此在本例中helloworldsayer.sayhello(),但是如果切入点是call(),那么连接点将是helloworldsayer.main()。这是正确的吗?

public class HelloWorldSayer {
    public static void main (String[] args) {
        sayHello();
    }

    public static void sayHello() {
        System.out.println("Hello");
    }
}

public aspect World {
    public hello():
        execution(static void HelloWorldSayer.sayHello());

    after() hello() {
        System.out.println("Bye");
    }
}

共有1个答案

赵驰
2023-03-14

如果我们再次查看HelloWorldSayer类,有4个连接点阴影(2个执行切入点和2个调用切入点)。

换句话说,public static void main(string[]args)public static void sayHello()引用执行切入点。(HelloWorldSayer.)sayHello();System.out.println(“hello”);引用调用切入点。

如果按以下方式更改声明的切入点,则切入点选择sayhello();

public pointcut hello():
    call(static void HelloWorldSayer.sayHello());
public pointcut hello():
    execution(static void HelloWorldSayer.sayHello());
 类似资料:
  • 在Java中的AOP(AspectJ)中,当我们谈到方法切入点时,我们可以将它们区分为两个不同的集合:和。 基于这里的这些资源: 执行vs.调用连接点 AOP中调用和执行的区别 null 将匹配callerObject.SomeMethod()方法中的连接点,因为RuntimeTypeObject的是CompiletimeTypeObject,但是此方法调用pointcut: 将不匹配,因为对象的

  • (1)和(2)两个执行标记的不同含义是什么?

  • 本文向大家介绍Spring AOP和AspectJ AOP之间的区别,包括了Spring AOP和AspectJ AOP之间的区别的使用技巧和注意事项,需要的朋友参考一下 序号 键 春季AOP AspectJ AOP 1 基本的 这是AOP技术的简单实现。它只能应用于豆类。 它是Java中AOP技术的完整实现。它可以应用于任何java类。 2 设计模式   它使用代理模式,因此将方面应用于代理对象

  • 我试图实现一个简单的Spring AOP(v4)示例,使用建议和一个原位切入点表达式,但是没有调用方面方法。我有所有必需的依赖关系(spring-aop、aopalliance和aspectweaver)。我做错了什么? 方面:

  • 主要内容:1.执行入口,2.进入拦截器责任链,3.执行顺序1.执行入口 调用了 方法 这个方法得到一个拦截器链, 是5个增强器封装成MethodInterceptor 然后 mi.proceed() 方法触发拦截器链的方法。 最后的一个方法进入了 , 进入了拦截器的责任链 2.进入拦截器责任链 ReflectiveMethodInvocation.proceed() -> ExposeInvocationInterceptor.invoke(mi) ->

  • 嗨,我正在使用Spring AOP进行日志记录,我有以下两个方面@before和@afterreturn,不幸的是,这两个方面都打印相同的响应,这里的期望是@before打印方法输入和@afterreturning打印方法输出。