リソース メソッドに任意のものを注入するためのカスタム アノテーションの実装に関するこの質問 [ 1 ]に対する彼の回答から、Michal のガイドに従いました。この (要点) [ 2jersey-quickstart-grizzly2
] には、原型から適応した最小限のテストベッドが含まれています。以下本文で引用させていただきます。
私はいくつかの問題に遭遇しました:
私のリゾルバーはパラメーター化されたタイプです(または、少なくとも私の意見では、物事をよりクリーンにするでしょう)。したがって
bind
、Michalが提案する方法でバインダーを使用できません。// Instead of the suggested: // bind(MyInjectionResolver.class).to(new TypeLiteral<InjectionResolver<MyAnnotation>>() {}).in(Singleton.class); // I do: bind(myInjectionResolverObject).to(new TypeLiteral<InjectionResolver<MyAnnotation>>() {});
リソース メソッドで使用する
MyAnnotation
と、サーバーの起動時に次の警告が表示されます (ただし、サーバーは引き続き起動します)。WARNING: The following warnings have been detected: WARNING: A HTTP GET method, public java.lang.String com.example.MyResource.get02(java.lang.Integer,java.lang.String), should not consume any entity.
リソース ( ) をリクエストすると、期待された の代わり
curl -X GET http://localhost:8080/myresource/01/aa
に取得されます。02: value = aa; providedValue = null
02: value = aa; providedValue = 123
MyResolver.resolve
メソッドは実行されません (ただし、実行MyBinder.configure
されます)。(これはテストベッド アプリケーションには関係ありませんが、もう少し複雑なコードで問題が発生します。リソース メソッドは実行されず、サーバーは で応答します
500 No content to map to Object due to end of input
)
私が間違っているかもしれないことについてのアイデアはありますか?