在Guice中,在执行截获的方法之后(而不是之前),有没有办法让我的MethodInterceptor::invoke
实现被调用?
我已将当前代码添加到AbstractModule
:
bindInterceptor(Matchers.subclassesOf(InterceptedClass.class), Matchers.annotatedWith(MyMethodAnnotation.class), new MyMethodInterceptor());
答案 0 :(得分:4)
要在拦截器中调用方法后执行代码(这不仅适用于Guice),您必须使用try / finally组合:
public Object invoke(MethodInvocation invocation) throws Throwable {
try {
// code run before execution
return invocation.proceed();
} finally {
// code run after execution
}
}