MethodInterceptor中的依赖注入

时间:2011-04-16 08:59:36

标签: java dependency-injection aop guice

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

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

1 个答案:

答案 0 :(得分:12)

来自Guice FAQ

为了在AOP MethodInterceptor中注入依赖项,请在标准bindInterceptor()调用旁边使用requestInjection()

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

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

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