MethodInterceptor 中的依赖注入

发布于 2024-11-01 14:22:18 字数 610 浏览 5 评论 0原文

我有带有依赖项的 MethodInterceptor 。我怎样才能注射它们?

此处,2007 年,Bob Lee 表示这种可能性应该是包含在下一个版本中,但我找不到这方面的 API。 <一href="http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/AbstractModule.html#bindInterceptor%28com.google.inject.matcher.Matcher%3C?%20super %20java.lang.Class%3C?%3E%3E,%20com.google.inject.matcher.Matcher%3C?%20super%20java.lang.reflect.Method%3E,%20org.aopalliance.intercept.MethodInterceptor.. .%29" rel="noreferrer">bindInterceptor 方法需要实例而不是类。

I have MethodInterceptor with dependencies. How could I inject them?

Here, in 2007, Bob Lee said that this possibility should be included in next release, but I can't find API for this.
bindInterceptor method requires instances instead of classes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟沫凡尘 2024-11-08 14:22:19

来自 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);
  }
}

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

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

From the Guice FAQ:

In order to inject dependencies in an AOP MethodInterceptor, use requestInjection() alongside the standard bindInterceptor() call.

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

Another option is to use Binder.getProvider and pass the dependency in the constructor of the interceptor.

public class NotOnWeekendsModule extends AbstractModule {
  protected void configure() {
     bindInterceptor(any(),
         annotatedWith(NotOnWeekends.class),
         new WeekendBlocker(getProvider(Calendar.class)));
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文