java - Spring AOP 表达式中的多个返回类型

标签 java spring java-8 spring-aop

我使用 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/

相关文章:

java - 在 jython 中导入类

java - 无法在 Docker 环境中使用 Spring ResourceUtils 或 DefaultResourceLoader 获取类路径资源

java - 未找到 jdbc 类 spring mvc

java - 需要CallSite解释

java - 使用流API获取字符串

java - Gmail 作为 JavaMail SMTP 服务器

java - 为所需的 super 字段生成构造函数

java - 在 spring servlet.xml 中添加我所有的 bean

java - 将两个List<>映射到HashMap

java - Java 中的链接方法很慢吗?