2011-09-24 60 views
3

我搜索了一個解決方案,將Guice Dependency injection與RequestFactory一起使用。 我偶然發現了這一點:https://github.com/etiennepGuice injection和RequestFactory:擴展ServiceLayerDecorator

它不是爲我工作,所以我改變了InjectedServiceLayerDecorator.java實現這樣:

https://github.com/opncow/injected-requestfactory/blob/master/src/main/java/com/trycatchsoft/gwt/requestfactory/InjectedServiceLayerDecorator.java

現在我的問題是:

能是什麼在RequestFactory的緩存機制方面做得更好(它還在工作嗎?)? 什麼是getTop()getNext()(在ServiceLayerDecorator中)? 在這個地方使用getTop()是正確/安全的嗎?

對不起,以爲太複雜了! 這是一樣簡單:

Class<?> serviceClazz = resolveServiceClass(requestContext); 
     return injector.getInstance(serviceClazz); 

回答

2

什麼是共達()和GetNext()(在ServiceLayerDecorator)呢?

ServiceLayer使用責任模式的鏈條:在情況下,你裝飾沒有什麼具體的事,它應該通過調用相同的參數相同的方法委託鏈(由getNext返回)的一個裝飾。如果你的裝飾器改變了參數,或者需要調用另一個方法,它應該在getTop上調用它,以便調用通過所有裝飾器路由,而不僅僅是鏈中的自己。

因此,您使用getTop是正確和安全的(看看GWT的LocatorServiceLayer,這正是它的作用)。

但你的代碼(艾蒂安的一個!)其實可以更簡單,更好:只需覆蓋createServiceLocator從您的噴油器獲得一個實例(同createLocator)。

+0

感謝您的洞察!我現在使用createServiceLocator,它更容易和完美地工作。 – opncow