gpt4 book ai didi

java - Guice 合成方法警告

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:19 26 4
gpt4 key购买 nike

我们拥有 Guice 及其 AOP 支持。我们有两个使用 AOP 支持的 3d 派对模块:Shiro 和 Guice 的 JPA 模块。结果,Guice 提示说“该方法可能会被拦截两次”。我的问题是如何避免这种行为:我可能根本不需要拦截合成方法。

如果模块是我们的,我们可以添加一个匹配器来过滤掉所有合成方法(就像它说的 here )但问题是这些是 3d 方模块。

最佳答案

我能找到的最好方法如下:像这样重写 bindInterceptor 方法。

匹配器:

public final class NoSyntheticMethodMatcher extends AbstractMatcher<Method> {
public static final NoSyntheticMethodMatcher INSTANCE = new NoSyntheticMethodMatcher();
private NoSyntheticMethodMatcher() {}

@Override
public boolean matches(Method method) {
return !method.isSynthetic();
}
}

bindInterceptor 方法:

@Override
protected void bindInterceptor(Matcher<? super Class<?>> classMatcher, Matcher<? super Method> methodMatcher, MethodInterceptor... interceptors) {
super.bindInterceptor(classMatcher, NoSyntheticMethodMatcher.INSTANCE.and(methodMatcher), interceptors);
}

但解决方案并不总是有效。就像我的情况一样,目标 JpaPersistModule 是最终的,我可以覆盖该方法的唯一方法是复制粘贴实现。

关于java - Guice 合成方法警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23301694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com