スプリングキャッシュの概念
Spring 3.1から始めて、既存のスプリングアプリケーションにキャッシュを追加する透明な方法が提供されます。これは @Transactionのように使用されます。アプリケーションレベルとバックエンドストレージの間には、抽象化の層があります。この抽象化のレイヤーは、既存のビジネスコードへのキャッシュによって引き起こされる侵入を最小限に抑えるために、さまざまなプラグ可能なバックエンドストレージ(Ehcache Guava Redis)をカプセル化するように設計されています。
Springのキャッシュテクノロジーにもかなりの柔軟性があります。 Spel(Spring Expression Language)を使用してキャッシュキーとさまざまな条件を定義できるだけでなく、すぐに使用できるキャッシュの一時的なストレージソリューションも提供し、Ehcacheなどの主流のプロフェッショナルキャッシュとの統合もサポートします。
その特性は次のように要約されています。
デザインコンセプト
Spring Frameworkの他のサービスと同様に、Spring Cacheは最初に抽象化の層を提供し、コアの抽象化は主に2つのインターフェイスに反映されます。
org.springframework.cache.cache
org.springframework.cache.CacheManager
キャッシュはキャッシュ自体を表します
CacheManagerは、キャッシュなどの処理と管理を表します。抽象化の意味は、実装の詳細の違いをブロックし、スケーラビリティを提供することです。このキャッシュ抽象化のレイヤーは、キャッシュの使用とキャッシュのバックエンドストレージを切り離し、将来バックエンドストレージを簡単に交換できるようにします。
3つのステップでスプリングキャッシュを使用します。
キャッシュを宣言します
@cachable( "Books")Public Book Findbook(ISBN ISBN){...}使用法は非常に簡単です。メソッドの結果をキャッシュするために、メソッドに@Cachableおよびその他の注釈を追加します。
メソッドが呼び出されたら、最初にメソッドのキャッシュ内の同じパラメーターへの呼び出しがあるかどうかを確認します。その場合、キャッシュからクエリをして結果を返します。そうでない場合は、特定のメソッドロジックを実行し、結果をキャッシュしてキャッシュします。もちろん、この一連のロジックは発信者に対して透明です。他のキャッシュ操作のメモは次のとおりです(詳細については、公式ドキュメントを参照してください):
スプリングキャッシュサポートをオンにします
<キャッシュ:Annotation-driven />
または、annotation @enablecachingメソッドを使用します
キャッシュバックエンドストレージを構成します
Spring Cacheは、いくつかの組み込みのバックエンドストレージの実装を提供します。以下は、CacheManagerの特定の実装です。
さらに、Springデータは2つのキャッシュマネージャーを提供します。
MemcachedやRedisなどの分散キャッシュを使用する場合、キャッシュとCacheManagerを自分で実装して、コンテキストで宣言できます。複数の異なるキャッシュの実装が必要な場合、さまざまなキャッシュマネージャーを組み合わせモードで一緒にカプセル化できます。
キャッシュキーはどのように生成されますか
私たちは皆、キャッシュのストレージ方法が一般的に重要な値であることを知っています。スプリングキャッシュでは、キーセットはどうですか?ここでは、重要な生成戦略を担当するkeygeneratorを紹介する必要があります。デフォルトはSimpleKeyGeneratorを使用することです。
順序付けられたパラメーター配列のハッシュ値であることがわかります。もちろん、ユーザーは主要な生成戦略をカスタマイズできます。
スプリングキャッシュの実装
上記は、スプリングキャッシュの一般的な使用法で、スプリングの実装方法を示しています。
Springソースコードを学習するとき、覚えておくべき2つのことがあります。
これらを覚えておいてください。春のいくつかのコンポーネントの実装とランタイムメカニズムを理解する方が簡単です。
スプリングキャッシュも例外ではありません。これは、典型的なスプリングAOPの実装です。春には、AOPは単純にプロキシとして理解できます(AspectJを除く)。 @Cachableメソッドのクラスがプロキシされ、プロキシでは、キャッシュされたクエリと設定操作が実装されることを宣言します。
キャッシュインフラストラクチャの作成
前の記事(Spring AOPモジュールの概要)では、Spring AOPの作成プロセスが基本的にBeanPostProcessorを実装し、Beanを作成するプロセスでプロキシを作成し、プロキシに豆に適用可能なすべてのアドバイザーを結合し、最終的に容器にさらされるという事実について説明しました。
春のアドバイザーアドバイスポイントカットのAOPマスターのいくつかの重要な概念
アドバイス=セクションインターセプトでの挿入の動作
PointCut = PointCutのセクション
アドバイザー=アドバイス +ポイントカット
スプリングキャッシュには、他のAOPSと同様のプロセスもあります
キャッシュプロキシを作成します
キャッシュのインターセプトライン
Spring Cacheで生成されたキャッシュプロキシオブジェクトは、CacheproxyFactoryBean Factoryクラスを使用しています。一般的に、春に標準的なプロキシの作成は、ProxyFactoryBeanに基づいています。ここでは、キャッシュロジックをより便利に処理するために、SpringはCacheProxyFactoryBeanを導入して、キャッシュ関連のプロキシを特異的に表します。キャッシュプロキシは、ターゲットオブジェクトによって実装されたすべてのインターフェイスをターゲットとプロキシをラッパーしてターゲットオブジェクトとプロキシできます。
ご覧のとおり、CacheproxyFactoryBeanでは、重要な特性はCacheInterceptorです。このクラスは、MethodEnterceptorの実装クラスです。このクラスの責任は、ターゲットオブジェクトターゲットメソッドで特定のキャッシュ操作を実行することです。これは、上記のアドバイスの責任です。
続き続け、実行の実行方法は親クラスのメソッドですcacheaspectsupport
この方法では、最終的に操作キャッシュの最終ロジックを見つけます
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。