1

私は、Jersey 2.x と、Jersey に組み込まれている HK2 を使用しています。注釈でマークされたサービスの特定のメソッドを装飾する必要があります。つまり、そのようなメソッド呼び出しの前後にいくつかの追加アクションを実行したいと考えています。残念ながら、HK2 には AOP 機能がありません。ファクトリをサービスのインターフェイスにバインドし、ファクトリのprovideメソッドが呼び出されるたびにサービスのプロキシを作成できると考えました。ただし、工場で機能するにはいくつかのものが必要です。

1) プロキシを作成するためのサービスのクラスとインターフェース

2)ServiceLocatorすべてのサービスの依存関係を適切に注入するインスタンス

そして、私は両方を持つ方法がわかりません。を使用してファクトリをバインドするbindFactory(MyFactory.class)と、サービスに関する情報を渡すことはできませんが、ServiceLocator インスタンスをそれに注入することはできます。そして、使用してファクトリをバインドするとbindFactory(new MyFactory(Service.class, ServiceImpl.class))、サービスに関する情報が得られServiceLocatorますが、そのサービスを適切に作成するためのインスタンスがありません。HK2 はファクトリ インスタンスに何も注入せず、とにかく ServiceLocator インスタンスを取得する方法がわかりません。 AbstractBinder を使用して、バインド中にファクトリにロケーターを提供します。

提案や推奨事項をいただければ幸いです。サービスを一様にプロキシしたいと思ったのは私が初めてではないことを願っています。

4

1 に答える 1

0

hk2 の最新バージョン (2.2.0-b25) では、AOP アライアンス インターセプターを任意のメソッドに追加する機能が追加されました。しかし、この機能はまだ完全には作成されておらず (コンストラクター インジェクションを追加する予定です)、完全に文書化されていません。ただし、サービスの任意のメソッドに AOP MethodInterceptors を追加できるようになるため、いろいろと試してみることをお勧めします。

于 2013-12-04T23:10:10.570 に答える