繁体   English   中英

GWT.create(类 <?> )与GIN?

[英]GWT.create(Class<?>) vs. GIN?

看起来GWT有自己的烘焙DI机制( GWT.create(Class<?>) )。 除此之外,GIN还能带来哪些好处? 您是否应该将它们彼此结合使用,还是相互排斥? 我喜欢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,那么杜松子酒不应该是你的重要一步,你仍然可以直接调用GWT.create,或隐含地让Gin去做。 事实上,为了甚至使用Gin,你需要调用GWT.create(MyGinjector.class)来让球滚动。

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

GWT.create(SomeThing.class)new SomeThing()之间的唯一区别是可以使用所谓的延迟绑定替换或生成确切的SomeThing类。 GWT.create()没有关于为GWT.create() d对象提供依赖关系的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM