我可以禁止在Guice注射吗?

时间:2012-07-19 15:39:05

标签: guice

我正在使用父级和子级注入器,我想确保我不会意外地访问父注入器中要绑定在子注入器中的类。如果父注入器访问该类,它可以自动绑定(并且不正确,因为范围很重要)。

有没有办法可以强制自动绑定在父注入器中失败,或者至少报告运行时错误?

例如,如果我有一个方法Foo“非法”请求酒吧:

class Bar { @Inject Bar() {} } // Shouldn't be accessible in Foo's injector
class Foo { @Inject Foo(Bar bar) {} } // Binding should fail here

2 个答案:

答案 0 :(得分:0)

看一下Binder doc:

http://google-guice.googlecode.com/git/javadoc/com/google/inject/Binder.html

requireExplicitBindings()可能就是您所需要的。通过使用模块中的语句,将禁用自动绑定,仅注入通过bind()provides配置的类。

答案 1 :(得分:0)

显然,执行此操作的唯一方法是为每个禁用的类编写提供程序方法。每个提供程序方法都会抛出运行时异常。

我已经提交enhancement request来支持在绑定时执行此操作。