Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Guice注入和请求工厂:扩展ServiceLayerDecorator_Java_Gwt_Guice_Requestfactory - Fatal编程技术网

Java Guice注入和请求工厂:扩展ServiceLayerDecorator

Java Guice注入和请求工厂:扩展ServiceLayerDecorator,java,gwt,guice,requestfactory,Java,Gwt,Guice,Requestfactory,我搜索了一个将Guice依赖项注入与RequestFactory结合使用的解决方案。 我偶然发现: 它对我不起作用,所以我将InjectedServiceLayerDecorator.java实现更改为: 现在我的问题是: 关于RequestFactory的缓存机制,可以做些更好的事情吗(它还在工作吗?)? getTop()和getNext()(在ServiceLayerDecorator中)用于什么? 在这里使用getTop()正确/安全吗 对不起,我想得太复杂了! 这很容易: Class&

我搜索了一个将Guice依赖项注入与
RequestFactory
结合使用的解决方案。 我偶然发现:

它对我不起作用,所以我将InjectedServiceLayerDecorator.java实现更改为:

现在我的问题是:

关于
RequestFactory
的缓存机制,可以做些更好的事情吗(它还在工作吗?)?
getTop()
getNext()
(在ServiceLayerDecorator中)用于什么? 在这里使用
getTop()
正确/安全吗

对不起,我想得太复杂了! 这很容易:

Class<?> serviceClazz = resolveServiceClass(requestContext);
        return injector.getInstance(serviceClazz);
Class serviceClazz=resolveServiceClass(requestContext);
返回injector.getInstance(serviceClazz);
getTop()和getNext()在ServiceLayerDecorator中的作用是什么

ServiceLayer使用责任链模式:如果您的装饰器没有任何特定的事情要做,它应该通过使用相同的参数调用相同的方法来委托给链中的下一个装饰器(由
getNext
返回)。如果您的decorator更改了参数,或者需要调用另一个方法,那么它应该在
getTop
上调用它,这样调用将通过所有decorator进行路由,而不仅仅是在链中位于其后面的decorator

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


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

感谢您的帮助!我现在使用createServiceLocator,它更简单,工作也更完美。