【问题标题】:Guice injection and RequestFactory: Extending ServiceLayerDecoratorGuice注入和RequestFactory:扩展ServiceLayerDecorator
【发布时间】:2012-02-28 02:54:03
【问题描述】:

我搜索了将 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);

【问题讨论】:

    标签: java gwt guice requestfactory


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的洞察力!我现在使用 createServiceLocator 并且它更容易并且完美地工作。
    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多