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

取消一个带有around通知的方法执行,并在方面内部手动执行此方法

劳麒
2023-03-14

比如:

public static String MethodA(){
String string = "a string";
return string;
}

2-我们用aspect.aj内的一个切入点捕获MethodA()的执行

比如:

pointcut pointcut_catchMethodA() : execution(static String MethodA());
String around() : pointcut_catchMethodA(){
//We return null or simply don't call the proceed()
return null;
}
public void MethodToCallMethodAInsideTheAspect(){

SenderActivity.MethodA();

}

共有1个答案

戚俊美
2023-03-14

我自己找到了解决办法

这个体系结构实际上是有效的,它必须被替换为切入点:

pointcut pointcut_catchMethodA() : execution(static String MethodA());
pointcut pointcut_catchMethodA() : call(static String MethodA(..)) && !within(Aspect);
public void MethodToCallMethodAInsideTheAspect(){

SenderActivity.MethodA();

}
 类似资料:
  • 我需要重写执行程序的执行方法,我需要改变线程超过核心池大小的行为,只有当队列已满时才会创建。 然而,在实时应用程序中,这种行为是不可取的,因为它会导致队列中存在的任务无休止地等待。 我已将execute方法更改如下: 尝试实现:核心线程-

  • 我想在调用非公共方法(bar)后执行一些特定操作。此方法在另一个方法(foo)中调用。请注意,“bar”和“foo”都是在第三方jar文件中定义的。 我试图在面向方面的编程中使用Spring使用注释来做到这一点。然而,我不能这样做。 在调用jar文件中的特定函数之后,有人能告诉我如何做特定的事情(调用特定函数)吗?

  • 我已经使用testng并行测试用例执行设置,但我只需要执行一次设置方法。 BeforeClass和BeforeMethod也会针对单个线程执行。但我需要在所有线程之前执行一次方法。 如何通过TestNG设置实现这一点? 测试NG。xml

  • 我需要创建一个具有架构列表的@Scheduled方法,对于每个架构,从2个表中删除行。 我将deleteFromCustomerTables定义为@Transactional(propagation=propagation.REQUIRES_NEW),并在其中使用EntityManager从2个表中删除行。 为了使其工作,我需要将@Transactional添加到计划FixedDelayTask,

  • 我有3种方法需要并行运行,因为它们彼此独立,并在最后合并每种方法的结果,并将其作为响应发送。我还需要处理异常。 在不同的帖子中,我找到了下面的代码并进行了相应的修改。 上述各项是否应正确并行运行?我知道这需要更多的时间,我想确保我做对了。

  • 在JavaScript中,可以编写这样的自动执行函数: 我希望在Java中实现这一点。例如: 有这样的事吗?