問題タブ [hk2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Bean が hk2 経由で作成されていない場合、@inject が機能しない
私はコントラクトにサービスを注入しようとしています:
しかし、categoryDAO は null です。
私もそれをバインドしようとしました:
しかし、それでもヌルのままです。
MyCategoryManager
with Reflections フレームワークを次のように初期化します。
google-app-engine - appengine で jersey 2.6 にアップグレードした後の NullPointerException
appengine で jersey を使用して Java アプリケーションを実行しています。最近、新しい HK2 AOP 機能を使用するために jersey 2.6 にアップグレードしました。このアップグレードを行った後、ジャージーを介して Web サービスを要求する際にいくつかの問題が発生しています。サーバーはしばらくの間正常に動作しますが、すべてのリクエストで例外が発生し、バグを修正する唯一の方法はアプリケーションを appengine に再デプロイすることです。コードの行は一切変更せず、アプリケーションを再デプロイするだけです。この問題は、jersey 2.6 にアップグレードし、HK2 AOP で 2 つの methodInterceptors を実装した後に発生しました。バグが表示されたときにすべてのリクエストで取得するスタックは次のとおりです。
java - Jersey 2 の Guice の @Provides に相当する HK2
依存性注入のために Google Guice で Jersey 1.X を使用しています。Jersey 2.X に切り替えるということは、代わりに依存性注入に HK2 を使用する必要があることを意味しているようです。
Guice を使用した Jersey 1.X では、アプリケーションは次のようになります。
そして、テストの場合は次のようになります。
私のリソースは次のようになります。
つまり、テスト用のモックを定義でき、すべてが良好です。
ただし、Jersey 2.X では、@Provides アノテーションに相当するものが見つかりません。MyResource は事実上同じです。実際のアプリケーションの依存性注入については、次のものがあります。
しかし、テスト用のモックを提供する方法がわかりません。誰でも方法を知っていますか?
java - テスト目的で汎用化されたスタブを注入する
私は現在、次のクラス/インターフェースをレイアウトしています。タイプは、実装T
から返されるデータの形式を表します。DataProvider
ファクトリを使用しているため、型情報を に添付する必要はありませんMyStreamingOutput
。HK2
に注入するために使用しDataProviderFactory
ていMyStreamingOutput
ます。
これはすべてうまくいきます。今、私は の単体テストをセットアップしようとしMyStreamingOutput
ていますが、いくつかの障害に遭遇しています。テスト目的で次の追加クラスを作成しました。
バインディングは
このクラスを に正常に挿入できますが、使用される型情報がファクトリに渡されるインスタンスによって共有されないMyStreamingOutput
ため、コンパイラの警告が表示されます。インターフェイスを実装しなくなるためgetDataProvider()
、クラスに型情報を追加できません。間違っているため、インターフェイスの型情報は必要ありません。スタブの場合を除き、ファクトリはインスタンスによって返される型を気にする必要はありません。この場合、設計が悪いと考えているため、パラメータとパラメータにセッターを使用することは避けたいと思います。DataProviderFactoryStub
DataProviderFactory
DataProvider
query
rowMapper
ジェネリックスのアプリケーションに微妙な何かが欠けているか、依存性注入のアプリケーションに明らかな何かが欠けているという感覚を揺るがすことはできません。このユースケースに対処する正しい方法は何ですか? これは DI が対処しようとしている問題のようなものですが、修正方法がわかりません。
java - ServiceLocator はどのようにして HK2 で @Service と @Contact を自動的に見つけますか?
hk2 ServiceLocatorに自動的に追加されるクラスに配置される注釈。
ServiceLocator
注釈付きクラスを自動的に検索する方法がわかりません。
テストサービス
TestServiceImpl
主要
結果は常にnull
です。が見つけられるDescriptor
ように追加する必要があります。ServiceLocator
ServiceLocator
注釈付きのクラスを自動的に見つけるにはどうすればよいですか? 私は何かを誤解しましたか?
spring - jersey-spring3: Spring マネージド Bean にジャージー OAuth リソースを注入する
Spring マネージド Bean を使用して Jersey 2.7 リソースを挿入しようとしています。具体的には、次のように Spring Bean 内にOAuth1Signatureを注入したいと考えています。
HK2 Spring 統合ドキュメント内で提供されている手順を使用してみました: HK2 Spring Integration。ドキュメントに従って、これをSpring xml構成に追加しました。
ただし、webapp を起動すると、次の例外が発生し続けます。
OAuth1Signature のドキュメントには、Jersey 2.7 が使用する HK2 フレームワークによって ServiceLocator が注入されることになっていると記載されています。サービスロケーターがどこから来るべきかわからないように見えるため、jersey-spring3ブリッジを使用してSpringにOAuth1Signatureをインスタンス化させる方法について非常に混乱しています。
私は StackOverflow や他の Jersey メッセージ ボードを検索してみましたが、それらのほとんどは逆のユース ケース (Jersey リソースに Spring Bean を注入する) を扱っています。これに関する助けがあれば大歓迎です!