Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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
Java GWT.create(Class<;?>;)与GIN?_Java_Gwt_Guice_Gwt Gin - Fatal编程技术网

Java GWT.create(Class<;?>;)与GIN?

Java GWT.create(Class<;?>;)与GIN?,java,gwt,guice,gwt-gin,Java,Gwt,Guice,Gwt Gin,看起来GWT有自己的烘焙DI机制(GWT.create(Class))。除此之外,杜松子酒还有什么好处?您是否应该将它们结合使用,或者它们是相互排斥的?我喜欢Guice,所以我很想使用GIN,但如果GWT已经开始做同样的事情,我就不想介绍它。GIN和GWT.create有一些区别-GIN更多的是通过@Inject注释提供依赖关系,无论是在字段、setter还是构造函数上,而GWT.create则专门用于获取实现。Gin将使用您提供的任何构造函数,但您必须专门提供替换类型,而GWT.create将

看起来GWT有自己的烘焙DI机制(
GWT.create(Class)
)。除此之外,杜松子酒还有什么好处?您是否应该将它们结合使用,或者它们是相互排斥的?我喜欢Guice,所以我很想使用GIN,但如果GWT已经开始做同样的事情,我就不想介绍它。

GIN和
GWT.create
有一些区别-GIN更多的是通过
@Inject
注释提供依赖关系,无论是在字段、setter还是构造函数上,而
GWT.create
则专门用于获取实现。Gin将使用您提供的任何构造函数,但您必须专门提供替换类型,而
GWT.create
将只使用默认构造函数,并且您的“重新绑定规则”不需要非常精确,甚至可能导致在编译时创建新类。它还能够查看用户正在运行的环境,并基于此选择一组特定的规则,而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)
来启动程序。

GWT.create()
与依赖项注入无关。这是一种工厂方法

GWT.create(SomeThing.class)
newsomething()
之间的唯一区别在于,可以使用所谓的。但是在
GWT.create()
中没有任何关于提供对
GWT.create()
d对象的依赖关系的内容