MethodInterceptor中的依赖注入

Sta*_*lin 5 java aop dependency-injection guice

我有带依赖关系的MethodInterceptor.我怎么能注射它们?

在这里,2007年,Bob Lee说这种可能性应该包含在下一个版本中,但是我找不到这个API. bindInterceptor方法需要实例而不是类.

Jes*_*son 12

来自Guice FAQ:

为了在AOP MethodInterceptor中注入依赖项,请requestInjection()与标准的bindInterceptor()一起使用.

public class NotOnWeekendsModule extends AbstractModule {
  protected void configure() {
    MethodInterceptor interceptor = new WeekendBlocker();
    requestInjection(interceptor);
    bindInterceptor(any(), annotatedWith(NotOnWeekends.class), interceptor);
  }
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是Binder.getProvider在拦截器的构造函数中使用并传递依赖项.

public class NotOnWeekendsModule extends AbstractModule {
  protected void configure() {
     bindInterceptor(any(),
         annotatedWith(NotOnWeekends.class),
         new WeekendBlocker(getProvider(Calendar.class)));
  }
}
Run Code Online (Sandbox Code Playgroud)