Java GWT.create(Class<;?>;)与GIN?
看起来GWT有自己的烘焙DI机制(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.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对象的依赖关系的内容