基本的に、オブジェクトを JSON として書き込む MessageBodyWriter があり、リクエストを処理したリソース メソッドに基づいて、出力のいくつかの側面を制御できるようにしたいと考えています。ただし、@Provider クラスのデフォルトのライフサイクルはシングルトン (JVM ごとに 1 つ) であるため、一部の構成オブジェクトのインスタンスを注入することはできません。これにより、2 つの明らかな回避策が残されます。
- カスタム注釈を使用する: writeTo(...) への各呼び出しには、呼び出されたメソッドの注釈のリストが含まれているため、注釈の存在を確認できます。ただし、JAX-RS メソッドには、すでにメタプログラミングがかなり含まれています。
- ThreadLocal プロパティ マップを使用します。スレッドごとに 1 つのリクエストを想定していますが、このアプローチではカプセル化が少し壊れます。リソース メソッドは、このマップを探している他のクラスがあることを認識している必要があります。
プロバイダー自体のライフサイクルを変更する方法はありますか? ジャージーを使用しています。