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

使用Spring AOP-AspectJ的确认消息

司徒骞尧
2023-03-14
package com.sample.a;
Class A{
    public void save(){
    }
    }
}
package com.sample.b;
Class B {
    public void save(){
    }
}
package com.sample.c;
Class C {
    public void save(){
    }
}
package com.sample.d;
Class D{
    public void save(){
    }
}
package com.sample.e;
Class E{
    public void save(){
    }
}
<aop:aspectj-autoproxy />
<bean id="sampleAspectJ" class="com.sample.xxxxxxxx" />
/**
 * aspect class that contains after advice 
 */
package com.sample;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;

@Aspect
public class SpringAopSample{

    @After(value = "execution(* com.sample.*.Save(..))")
    public void test(JoinPoint joinPoint) {


        System.out.println("Hello World");



    }

}

有没有更好的方法来实现上述场景?如果这5个类在不同的包中,具有不同的方法名怎么办?我需要在方面中编写5个不同的方法吗(用@after advision注释)

共有1个答案

越福
2023-03-14

您应该熟悉AspectJ切入点语法。例如

  • 示例中您自己的切入点执行(*com.sample.*.save(..))将不匹配示例save()方法中的任何一个,因为
    • 您在save()中使用了大写的“s”,但是这些方法的第一个字符是小写的“s”,
    • 您的类宁愿匹配com.sample.*.*(子包!)不仅仅是com.sample.*.

    诸如此类。我希望这回答了你的问题,尽管它有点不清楚你到底想知道什么。

 类似资料:
  • 我是一个新的bee-to-Spring框架,我指的是Spring项目中可用的文档。 在这个过程中,我还学习了一个新概念AOP。我遵循spring文档来尝试一些示例http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html 我尝试使用Spring AOP为我的第一个Aspect Hellowor

  • 我正在用Java实现Akka-Alpakka,用于从ActiveMQ队列消费和生成队列。我可以成功地从队列中消费,但还不能实现应用程序级消息确认。 我的目标是使用队列中的消息,并将它们发送给另一个参与者进行处理。当该角色完成处理后,我希望它能够控制ActiveMQ中的消息确认。这大概是通过向另一个可以进行确认的参与者发送消息、调用消息本身的确认函数或其他方式来完成的。 在我的测试中,两条消息被放入

  • Java+Spring+Maven应用程序: 有人能给我提供链接或者建议我一个纯AspectJ实现,不使用基于代理的Spring AOP吗? 如果我试图从同一中的访问,则不支持此操作。 我想知道:1)如何用切入点编写一个支持类内方法调用的aspectj?2)如何将其配置到我当前的Spring,maven项目中,使用aspectj加载时编织?3)如何配置aspectj maven插件,以便在Tomc

  • 我的Sring引导应用程序监听Amazon SQS队列。现在,我需要实现正确的消息确认--我需要接收一条消息,做一些业务逻辑,只有在此之后,如果成功,我需要ack消息(从队列中删除消息)。例如,如果我的业务逻辑出现错误,消息必须重新排队。 现在我不知道如何从我的听众那里获取信息。

  • 本文向大家介绍如何使用JavaScript显示确认消息?,包括了如何使用JavaScript显示确认消息?的使用技巧和注意事项,需要的朋友参考一下 确认对话框通常用于征得用户对任何选项的同意。它显示一个带有两个按钮的对话框:取消。 如果用户单击“确定”按钮,则窗口方法确认()将返回true。如果用户单击“取消”按钮,则返回false。 示例 您可以尝试运行以下代码以在JavaScript中实现确认

  • 好吧,我不需要详细介绍我设置的整个系统, 我遇到的问题是,当使用者取消(amqpchannel->basic_cancel)对队列的监听时,会留下一个额外的消息未被这个工作者确认。它也不会触发正常的回调来处理此消息。 队列正在阻塞(使用wait) 预取为1,这是您所能拥有的最小值 使用者可以动态侦听() 使用者可以动态忘记() 我不会告诉给定使用者使用或取消给定队列的确切方式。但这一切都是完美的工