我刚刚在Guice的用户指南中阅读了有关Constructor Bindings的章节,但并不真正了解何时使用构造函数绑定。
据我所知,它们提供与@Provider方法相同的功能,除了使用Constructor Bindings创建的实例参与AOP。它是否正确?任何人都可以提供比文档更好的例子吗?
答案 0 :(得分:4)
据我了解,它们提供与@Provider方法相同的功能,除了使用Constructor Bindings创建的实例参与AOP。
这或多或少是正确的,尽管构造函数绑定有一些优点。基本上,它是一种绑定到类的方式,就好像它在特定构造函数上有@Inject
一样,即使它没有,也不能自己添加注释。与@Provides
方法不同,您可以编写实用程序以允许您执行更多有趣的操作。例如,你可以有一个utilitiy方法返回一个类的唯一构造函数,如果有多个则抛出异常:
bind(Foo.class).toConstructor(getOnlyConstructor(FooImpl.class));
如果您出于某种原因需要使用其他注释(除@Inject
之外),还可以使用实用程序方法获取用于绑定的注释构造函数。