3

Guice Dependency Injection と一緒に使用するソリューションを探しました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()and getNext()(ServiceLayerDecorator) は何のためにあるのですか? getTop()そして、この場所で使用するのは正しい/安全ですか?

複雑すぎて申し訳ありません!それは次のように簡単でした:

Class<?> serviceClazz = resolveServiceClass(requestContext);
        return injector.getInstance(serviceClazz);
4

1 に答える 1

2

getTop() と getNext() (ServiceLayerDecorator 内) の目的は何ですか?

ServiceLayer は一連の責任パターンを使用します。デコレーターが特に何もすることがない場合getNext、同じ引数で同じメソッドを呼び出して、チェーン内の次のデコレーター ( によって返される) に委譲する必要があります。デコレーターが引数を変更する場合、または別のメソッドを呼び出す必要がある場合は、それを呼び出してgetTop、呼び出しがチェーン内のそれ以降のデコレーターだけでなく、すべてのデコレーターを経由するようにする必要があります。

したがって、 の使用getTopは正しく安全です (GWT の LocatorServiceLayer を見てください。まさにそれが機能します)。

しかし、あなたのコード (および Etienne のコード!) は、実際にはよりシンプルで優れたものにすることができます:createServiceLocatorインジェクターからインスタンスを取得するようにオーバーライドするだけです ( と同じcreateLocator)。

于 2011-09-24T22:17:18.323 に答える