看起来 GWT 有自己内置的 DI 机制 ( GWT.create(Class<?>)
)。除此之外,GIN 还提供什么好处?您应该将它们结合使用,还是相互排斥?我喜欢 Guice,所以我很想使用 GIN,但如果 GWT 已经可以开箱即用地做同样的事情,我不想再介绍它。
最佳答案
Gin 和 GWT.create
有一些不同 - Gin 更多的是通过 @Inject
注释提供依赖,无论是在字段、setter 还是构造函数上,而GWT.create
专门用于获取实现。 Gin 将使用您提供的任何构造函数,但您必须特别提供替换类型,而 GWT.create
将仅使用默认构造函数,并且您的“重新绑定(bind)规则”不需要像精确,甚至可以导致在编译时创建新类。它还能够查看用户正在运行的环境,并据此选择一组特定的规则,这是 Gin 无法做到的。
Gin 实际上利用 GWT.create
来获得这些其他功能 - 如果您没有定义规则,Gin 将自动调用 GWT.create
。这意味着如果你有这样的规则
@Inject MyRemoteServiceAsync rpcService;
Gin 将调用 GWT.create
来构建该 rpc 调用。这也适用于 UiBinder、编辑器驱动程序、I18n 消息和常量等。
如果您已经了解并喜欢 Guice,Gin 对您来说应该不是很大的一步,您仍然可以直接调用 GWT.create,或者隐式地要求 Gin 执行此操作。事实上,即使要使用 Gin,您也需要调用 GWT.create(MyGinjector.class)
来启动。
关于java - GWT.create(Class<?>) 与 GIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13030464/