微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

方面J;当用“Before”而不是“Around”注释时调用方面

如何解决方面J;当用“Before”而不是“Around”注释时调用方面

所以我需要在从特定方法调用方法拦截方法

我有这个设置,它正在工作:

@pointcut("execution(*com.connection.sendRequest(..))&& cflow(execution(*com.soapService.sendSoapRequest(..)))")
public void interceptSendRequestOnSoapService() {
};

@Before("interceptSendRequestOnSoapService()") 
public void interceptSoapRequest(JoinPoint point){
...
};

这很好用并且可以像我需要的那样拦截

但是,当我将注释更改为“Around”时:

@Around("interceptSendRequestOnSoapService()") 
public void interceptSoapRequest(JoinPoint point){
...
};

它根本没有被调用。它甚至从未进入方面。它不会拦截。为什么,我怎样才能让它在@Around 上工作?

解决方法

好吧,我似乎已经想通了。

  1. 我将第一次执行更改为“调用”。所以调用(* com.connection.sendRequest(..))

  2. 我让我的方法返回一个对象。所以“返回joinpoint.proceed()”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。