Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以禁止在Guice注射吗?_Guice - Fatal编程技术网

我可以禁止在Guice注射吗?

我可以禁止在Guice注射吗?,guice,Guice,我正在使用父注入器和子注入器,我希望确保不会意外访问父注入器中要绑定到子注入器中的类。如果父注入器访问该类,则该类可能会自动绑定(并且由于作用域很重要而被错误绑定) 有没有办法强制父注入器中的自动绑定失败,或者至少报告运行时错误 例如,如果我有一个方法Foo“非法”请求一个条: class Bar { @Inject Bar() {} } // Shouldn't be accessible in Foo's injector class Foo { @Inject Foo(Bar bar) {

我正在使用父注入器和子注入器,我希望确保不会意外访问父注入器中要绑定到子注入器中的类。如果父注入器访问该类,则该类可能会自动绑定(并且由于作用域很重要而被错误绑定)

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

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

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

查看活页夹文档:


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

显然,唯一的方法是为每个禁止的类编写提供程序方法。每个提供程序方法都会引发运行时异常


我已经提交了一份支持在绑定时执行此操作的文档

skipSources
旨在简化错误输出。当您有绑定错误时,Guice不会在调用堆栈中报告提供的类。感谢您提供的信息。。。所以它的“全部或无”(允许一切(默认)或拒绝一切并显式添加绑定),没有“除…之外的一切”模式。是的,除了显然可以逐个模块地限制此要求之外,但它仍然适用于所有类。