java - GWT.create(Class<?>) 与 GIN?

标签 java gwt guice gwt-gin

看起来 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/

相关文章:

Guice 实例化对象后调用 init 方法

java - 从作业中调用 Controller 操作方法

java - 使用倒数计时器以特定时间间隔发出信号

GWT : A widget that has an existing parent widget may not be added to the detach list

css - GWT - PopupPanel,翻转时更改布局

java - Google Guice 通过注释和/或包进行绑定(bind)

java - 在RecyclerView的Adapter中模仿 'onActivityResult'

java - 通过Activity修改静态HashMap

java - 在客户端和服务器之间共享 JUnit 测试

java - 使用 Guice 的 @Inject 注入(inject) @Context 字段(到子资源中)