它看起來像GWT有自己的烘烤DI機制(GWT.create(Class<?>)
)。 GIN爲此提供了什麼好處?你是否應該將它們相互結合使用,還是相互排斥?我喜歡Guice,因此我很想使用GIN,但是如果GWT已經在開箱即用的情況下做了同樣的事情,不想介紹它。GWT.create(類<?>)與GIN?
6
A
回答
8
杜松子酒和GWT.create
有一些差異 - 杜松子酒更多的是經由@Inject
註釋提供的相關性,無論是在字段設置器,或構造,而GWT.create
是特別有關獲取的實現。杜松子酒會使用您提供的任何構造函數,但您必須專門提供替換類型,而GWT.create
只能使用默認構造函數,而您的「重新綁定規則」不需要非常精確,甚至可以導致新類在編譯時創建。它還能夠查看用戶正在運行的環境,並根據該規則選擇一組特定的規則,這是Gin無法做到的。
杜松子酒實際上使用GWT.create
來獲得這些其他功能 - 如果您沒有定義規則,杜松子酒會自動呼叫GWT.create
。這意味着如果你有一個像
@Inject MyRemoteServiceAsync rpcService;
杜松子酒的規則將調用GWT.create
構建RPC調用。這也適用於UiBinder,編輯驅動程序,I18n消息和常量等。
如果您已經理解並喜歡Guice,杜松子酒不應該是您的一大步,而且您仍然可以直接調用GWT.create,或者暗示讓Gin去做。事實上,爲了使用杜松子酒,您需要撥打GWT.create(MyGinjector.class)
來讓球滾動。
8
GWT.create()
與依賴注入無關。這是一個工廠方法。
GWT.create(SomeThing.class)
和new SomeThing()
之間的唯一區別在於,可以使用所謂的deferred binding替換或生成確切的SomeThing
類。但是在GWT.create()
中沒有提供關於例如對GWT.create()
d對象的依賴關係。
相關問題
- 1. 谷歌GIN AbstractGinModule&GWT.Create()
- 2. ArrayAdapter <HashMap<,,>>與commonsguy EndlessAdapter類
- 3. 綁定類<?>與Guice
- 4. 泛型和類<?擴展Enum <?>>,EnumSet.allOf(類)與class.getEnumConstants()
- 5. 類型'Async <string []>'與類型'seq <'a>'不兼容'
- 6. JavaScript與<輸入類型=「按鈕」...>和不與<button ...>
- 7. <textview></textview>與<textview />
- 8. <xsl:sort>與<option>
- 9. <text>與<span>
- 10. <body>與<g:layoutBody>
- 11. <Flags>與<FlagsAttribute()>
- 12. <button>與<fieldset>
- 13. <iostream>與<iostream.h>與「iostream.h」
- 14. 組件圖與類圖?軟件</p> <p>
- 15. std ::地圖在tempate類<T>與密鑰<T>
- 16. XSD <element><complexType><sequence>與<element><sequence>
- 17. 與<T>
- 18. 與<textarea>
- 19. 與<wicket:link>
- 20. 與<function>
- 21. 與< or >
- 22. 與<h:panelGrid>
- 23. 進樣入口點類GIN
- 24. 沒有類型'java.lang.Class <org.springframework.data.repository.Repository <?, ?>>'
- 25. Java泛型與類<T>
- 26. 從Java類擴展與<class name>
- 27. '&'與類型爲'AutoreleasingUnsafeMutablePointer <UIImage?>'
- 28. DomXPath與DOMDocument得到<img>類URL
- 29. 切換<a>類與Angular.js
- 30. 與<TypeParameter> C#類語法