java Guice注入和请求工厂:扩展ServiceLayerCorator
我搜索了一个将Guice依赖项注入与RequestFactory
结合使用的解决方案。
我偶然发现了这个:https://github.com/etiennep
它对我不起作用,所以我更改了InjectedServiceLayerDecorator。这方面的java实现:
现在我的问题是:
关于RequestFactory
的缓存机制,可以做些更好的事情吗(它还在工作吗?)?
getTop()
和getNext()
(在ServiceLayerCorator中)是做什么的?
在这个地方使用getTop()
正确/安全吗
对不起,我想得太复杂了! 这很容易:
Class<?> serviceClazz = resolveServiceClass(requestContext);
return injector.getInstance(serviceClazz);
# 1 楼答案
ServiceLayer使用责任链模式:如果您的装饰器没有任何特定的事情要做,它应该通过使用相同的参数调用相同的方法来委托给链中的下一个装饰器(由
getNext
返回)。如果您的decorator更改了参数,或者需要调用另一个方法,那么它应该在getTop
上调用它,这样调用将通过所有decorator进行路由,而不仅仅是在链中位于其后面的decorator因此,您对
getTop
的使用是正确和安全的(请查看GWT中的LocatorServiceLayer,这正是它所做的)但是你的代码(还有Etienne的代码!)实际上可以变得更简单更好:只需重写
createServiceLocator
即可从注入器获取实例(与createLocator
相同)