2016-09-27 5 views
0

私は、アプリケーションのデータレイヤーに少量のキャッシュを追加しようとしています。目標:要求終了時にキャッシュを無効にするSpring

私はいくつかのロジックがあります。これらのメソッドは、すべてのステップでデータベースからのコレクションにアクセスする必要があります。今、私はmethod1の呼び出しの間にコレクションを照会し、いくつかのケースでは、単にそれを再度照会することを避けるために、5-6回の呼び出しの周りにコレクションを渡すことになります。

この問題を解決するために、私はクエリの結果をキャッシュすることができたと思っていましたが、データベースに行くことなく即座に同じレスポンスを受け取ることを再度知っているだけです。また、廃止予定のオブジェクトを避けるために、私のキャッシュ無効化戦略は、すべてのhttp要求が要求の開始時に照会したコレクションを渡す行為をエミュレートし終えるたびに無効にすることです。

データベースにアクセスするのに私はSpringDataを使用していますが、Springのキャッシングアノテーションを使用してリポジトリ結果データをキャッシュすることを考えています。私はドキュメントをチェックし、動作させるにはキャッシュ実装が必要です(例えば、EHCacheまたはそれに類するもの)。彼らの無効化戦略を見ると、私は要求に基づく無効化に関連するものを見つけることができないようです。

これは可能ですか?これは私の問題の良い解決策ですか?私はMongoDBをデータベースとして使用しています。

答えて

0

キャッシュ期間はリクエスト時間であるため、実際にはキャッシュは必要ありません。したがって、リクエストスコープのBeanに結果を入れるだけです。http://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html

オブジェクト指向としてコードした後、method1のコレクションをBeanのプロパティ(リクエストスコープ付きBean)に入れ、他のメソッドでアクセスします。他のクラスで使用されている場合は、スプリングインジェクションを使用します。

関連する問題