我搜索了一个与RequestFactory
一起使用Guice Dependency注入的解决方案。
我偶然发现了这个问题:https://github.com/etiennep
它不适合我,所以我将InjectedServiceLayerDecorator.java实现更改为:
现在我的问题是:
关于RequestFactory
的缓存机制,是否可以做得更好(它还能用吗?)?
什么是getTop()
和getNext()
(在ServiceLayerDecorator中)?
在这个地方使用getTop()
是否正确/安全?
Class<?> serviceClazz = resolveServiceClass(requestContext);
return injector.getInstance(serviceClazz);
答案 0 :(得分:2)
什么是getTop()和getNext()(在ServiceLayerDecorator中)?
ServiceLayer使用责任链模式:如果你的装饰器没有任何具体要做,它应该通过调用具有相同参数的相同方法委托给链中的下一个装饰器(由getNext
返回)。如果您的装饰器更改了参数,或者需要调用另一个方法,它应该在getTop
上调用它,这样调用就会通过所有装饰器进行路由,而不仅仅是链中自身的装饰器。
因此,您对getTop
的使用是正确和安全的(请查看GWT中的LocatorServiceLayer,这正是它的作用)。
但是你的代码(以及Etienne的那个!)实际上可以变得更简单和更好:只需覆盖createServiceLocator
以从注入器获取实例(与createLocator
相同)。