3

Application コンストラクター (ResourceConfig から継承するもの) で、Jersey アプリケーションのいくつかのコンポーネントを初期化しようとしています。このように見えます

public Application(@Context ServletContext context,
                   @Context ServiceLocator locator)...

任意の時点でロケーターを使用しようとすると、locator.create(MyThing.class) メソッドを使用して AbstractBinder に登録したもののインスタンスを作成できません。

@inject フィールド アノテーションを介してリソース クラスに適切に注入されるため、それらが正しくバインドされていることは確かです。

違いは、Jersey/HK2 フレームワークがリソース クラスをインスタンス化していることです (それらはパッケージ スキャン パスにあるため、予想どおりです) が、コードを介して ServiceLocator を活用できないようです。

私の最終的な目標は、 @Inject 属性を持つ他の非ジャージー クラスを注入することです。構成されたデータベース アクセス レイヤーを挿入する必要があるワーカー クラスがあります。私は言いたい

locator.Create(AWorker.class) 

そして注射します。

Binder に既に登録/バインドしたすべてのものを挿入する実際の ServiceLocator を取得するにはどうすればよいですか? (または、ServiceLocator 以外のものを使用する必要がありますか?)

4

2 に答える 2