私が望むのは、現在のHttpServlerRequest + HttpServletResponse + HttpSession +にアクセスし、アプリケーションの任意のポイントからユーザーデータやユーザーの設定などの重要な情報を取得することです。現時点で私は特別なオブジェクトを作成しています。MyServletContextこれは、すべてのオブジェクトのすべてのメソッドに最初のパラメータとして渡されます。私はこのパラメータを取り除きたいが、それを行う最良の方法は何か分からない。コード内の任意の場所からHttpContext、HttpServletRequest、HttpServletResponseにアクセスする
私の考えの1つは、グローバルキャッシュを作成することです。MyServletContext現在のスレッドでハッシュされています。 MyServletContextに格納されている情報が必要な場合はいつでも、私はこのオブジェクトを見つけることができるキャッシュを呼び出します。私はこのキャッシュスレッドを安全にする必要があることを知っていて、それを行う方法を知っています。 質問は:それを行うための良い方法はありますか?
実際、必要なものだけです。これはカップリングを減らし、再利用性を向上させます(それについて気にしなければ、デバッグ性) –
私はその点を見ています。 HttpXXX変数はリクエスト処理の最上位レベルでのみ必要なので、簡単に渡すことはできません。しかし、私のユーザーデータとユーザーの好みはかなりの場所で必要になります。また、私は別の環境(例えば、コンソールアプリケーションのような)で私のコアオブジェクトを使用したい場合でも、私はまだこの情報が必要です。だから、どんな意味でも再利用性に影響しないようです。この目的のためにThreadLocalを使用しないのがよい理由はありますか? – Jakub