首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AOP:在两种不同方法上应用aop的错误::0不一致的绑定

AOP:在两种不同方法上应用aop的错误::0不一致的绑定
EN

Stack Overflow用户
提问于 2017-04-10 19:30:43
回答 1查看 2.1K关注 0票数 0

我试图在两种不同路径中的两种不同方法上应用@a方面

代码语言:javascript
运行
复制
class Service1{
    public Object applyX(X x){
     //code
    }
}

class Service2{
    public OtherObject applyY(Y y){
     //code
    }
}

我有我的方面课:

代码语言:javascript
运行
复制
@Aspect
@Component
public class MyProcessor {

    @Before("execution(* com.a.b.c.Service1.applyX"
            + " (com.xp.X)) "
            + "&& args(engineEvaluationRequest) || "
            + "execution(* com.a.b.d.Service2.applyY"
            + " (com.yp.Y))"
            + "&& args(y)")
    public void process(X x ,Y y){
        //code
    }
}

我收到一个错误org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'objectMapperConfigurer' defined in class path resource [springfox/documentation/spring/web/SpringfoxWebMvcConfiguration.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 inconsistent binding

我不明白到底出了什么问题。我能得到帮助吗?谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2017-04-11 11:03:03

错误消息inconsistent binding已经说过了:您的变量绑定到args()是不一致的,因为它由于|| (逻辑或)运算符而不明确。可以找到并可以绑定XY,但另一个将是未定义的。您可能会假设,如果变量没有绑定,则默认为null,但这一假设是错误的。AspectJ不是那样工作的。切入点必须毫不含糊地将变量绑定到相应的通知参数。

编辑:因为||是一个逻辑OR,因此是非排他性的(与XOR不同),甚至可能同时发生两个OR分支匹配的情况。那么,哪个匹配的参数或注释应该被绑定?这确实是模棱两可的。

那你怎么能修好呢?只需使用两个切入点/建议对,而不是一个。如果通知很复杂,并且包含大量代码,则仍然可以将该代码分解为接受JoinPoint参数的助手方法。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43331538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档