Java - 使用guice拦截方法?

时间:2011-12-04 23:57:32

标签: java annotations inversion-of-control guice

我正在尝试使用guice实现方法拦截。 我希望能够注释方法并拦截它们,并且在尝试调用bindInterceptor时遇到错误。

错误是: 方法bindInterceptor(Matcher,Matcher,MyInterceptor)未定义MyModule类型

我做错了吗?

public class MyInterceptor implements MethodInterceptor {

    @Override
    public Object invoke(MethodInvocation arg0) throws Throwable {
        return arg0.proceed();
    }
}

public class MyModule extends AbstractModule {

    @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD)
    @interface MyAnnotation {}

    @Override
    protected void configure() {
            // I get an error on this line
        bindInterceptor(Matchers.any(), Matchers.annotatedWith(MyAnnotation.class), 
                new MyInterceptor());
    }
}

1 个答案:

答案 0 :(得分:3)

此错误通常是因为importMatchersAbstractModule之一导致错误MethodInterceptor而导致错误。

这三种产品的进口线是什么?你应该:

import com.google.inject.AbstractModule;
import com.google.inject.matcher.Matchers;
import org.aopalliance.intercept.MethodInterceptor;