Spring AOP multiple return 输入表达式

Spring AOP multiple return type in expression

我正在使用 Spring aop,并且在我的表达式中只输入一个 return 就好了

<aop:config>
        <aop:pointcut id="webResourceInvocationPointcut"
            expression="execution(public com.es.core.message.ResultOrError com.presentation.resource..*.*(com.es.mus.MUSIn,..))" />
        <aop:advisor pointcut-ref="webResourceInvocationPointcut" advice-ref="resourceChainOfInterceptors" />
    </aop:config>

这里我指定如果请求转到 public 资源,方法 return 类型是 com.es.core.message.ResultOrError 并且方法中的包和参数,我想使用 aop是 com.presentation.resource..*.*(com.es.mus.MUSIn,..))

但是现在,我不仅要允许 com.es.core.message.ResultOrError 作为 return 类型,还要允许 java.util.concurrent.Future

通配符 * 有效,但我只需要过滤这两种类型。也一个接一个地添加它不起作用。

我收到这个错误

Caused by: java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting '(' at character position 89


[3:47] 
execution(public com.es.core.message.ResultOrError java.util.concurrent.Future scala.concurrent.Future com.presentation.resource..*.*(com.es.mus.MUSIn,..))

知道如何解决吗?

您可以使用 ||(或)布尔运算符。根据您的堆栈跟踪,您的表达式应该类似于:

expresion= "execution(public com.es.core.message.ResultOrError com.presentation.resource..*.*(com.es.mus.MUSIn,..) || java.util.concurrent.Future com.presentation.resource..*.*(com.es.mus.MUSIn,..)||  scala.concurrent.Future com.presentation.resource..*.*(com.es.mus.MUSIn,..) )"