簡體   English   中英

Guice合成方法警告

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM