[英]Guice synthetic methods warning
我們正在使用Guice及其AOP支持。 我們有兩個使用AOP支持的3d派對模塊:Shiro和Guice的JPA模塊。 結果Guice抱怨“該方法可能被截獲兩次”。 我的問題是如何避免這種行為:我可能根本不需要攔截合成方法。
如果模塊是我們的模塊,我們可以添加一個Matcher來過濾掉所有合成方法(就像它在這里說的那樣),但問題是這些是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是最終的,我可以覆蓋該方法的唯一方法是復制粘貼實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.