Guice注入和RequestFactory:扩展ServiceLayerDecorator

时间:2011-09-24 01:55:32

标签: java gwt guice requestfactory

我搜索了一个与RequestFactory一起使用Guice Dependency注入的解决方案。 我偶然发现了这个问题: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);

1 个答案:

答案 0 :(得分:2)

  

什么是getTop()和getNext()(在ServiceLayerDecorator中)?

ServiceLayer使用责任链模式:如果你的装饰器没有任何具体要做,它应该通过调用具有相同参数的相同方法委托给链中的下一个装饰器(由getNext返回)。如果您的装饰器更改了参数,或者需要调用另一个方法,它应该在getTop上调用它,这样调用就会通过所有装饰器进行路由,而不仅仅是链中自身的装饰器。

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

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