我使用 Spring aop 并且在我的表达式中只有一个返回类型就很好
<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
方法返回类型是 com.es.core.message.ResultOrError
我想使用 aop并且方法中的包和参数是com.presentation.resource..*.*(com.es.mus.MUSIn,..))
但现在,我不仅要允许 com.es.core.message.ResultOrError
作为返回类型,还要允许 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,..))
知道如何解决吗?
最佳答案
您可以使用 ||
(或) boolean 运算符。根据你的堆栈跟踪你的表达应该是这样的:
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,..) )"
关于java - Spring AOP 表达式中的多个返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607219/