3

我搜索了一种将 Guice 依赖注入与RequestFactory. 我偶然发现了这个:https ://github.com/etiennep

它对我不起作用,所以我将 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);
4

1 回答 1

2

getTop() 和 getNext()(在 ServiceLayerDecorator 中)有什么用?

ServiceLayer 使用责任链模式:如果你的装饰器没有什么特别的事情要做,它应该getNext通过使用相同的参数调用相同的方法来委托给链中的下一个装饰器(由 返回)。如果您的装饰器更改了参数,或者需要调用另一个方法,它应该调用它,getTop以便调用通过所有装饰器路由,而不仅仅是链中自身之后的那些。

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

但是您的代码(以及 Etienne 的代码!)实际上可以变得更简单和更好:只需覆盖createServiceLocator以从您的注入器获取一个实例(与 相同createLocator)。

于 2011-09-24T22:17:18.323 回答