我正在使用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
且方法中的包和参数为com.presentation.resource..*.*(com.es.mus.MUSIn,..))
的资源,我想使用aop
但是现在,我不仅允许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,..))
知道怎么解决吗?
答案 0 :(得分:3)
您可以使用||
(或)布尔运算符。基于您的堆栈跟踪,您的表达式应该类似于:
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,..) )"