Springキャッシュ——@Cachebale
1652 ワード
オリジナルステートメント:完全に著者のオリジナルですので、著者の労働力を尊重してください.転載は必ず原文の住所を明記してください.
@Cachebaleは、方法レベルに適用することも、クラスレベルの注釈に使用することもできる.spring 3.1からキャッシュ管理を実現しました. value:必要なものです.これは自分で取った名前です.この方法を初めて呼び出した時に戻ってきたbook Listはメモリのどこに存在するかを指定しました. key:オプションです.SpEL式を使用するには、ここではパラメータ condition:方法が戻った結果、book Listはキャッシュしますか?コンディションには限定条件が追加されています.この例では、入ってきた言語コードが1である限り、返ってきたbook Listはキャッシュされ、langageに他の値が伝えられたら、book Listはキャッシュされない. 次はページ更新後のデータが更新されていないという問題があったら、
補足:実際には、第2の呼び出し方法の場合、springは
@Cachebaleは、方法レベルに適用することも、クラスレベルの注釈に使用することもできる.spring 3.1からキャッシュ管理を実現しました.
@Cacheable
は何ができますか?分かりやすく理解するために、栗を挙げます.一つの方法はgetBooksByUsernameAndLanguage(String username, int language)
です.明らかにデータベースの中のすべての私の英語の本の対象を得る方法です.この関数の戻り値が大きく、ページ上で頻繁に呼び出されると、毎回の呼び出しはデータベースに再接続し、膨大な量のリストを返します.ページの応答とリソースの占有率が大きいかもしれません.私たちが望んでいるのは、この方法を初めて呼び出した時、戻ってきたデータをサーバー端のキャッシュに入れて、後でこの方法を呼び出す時に、直接にキャッシュから取り出してもいいです.これでデータベースのリソースを調べる必要がなくなります.@Cacheable
の役割はこれです.@Cacheable
はどう使いますか?くりを挙げます.@Cacheable(value = "CACHE_BOOK",key = "#username", condition = "#language = 1")
public List getBooksByUsernameAndLanguage(String username, int language) {
// balabalabala...
return bookList;
}
コードを見ると、@Cacheable
の注釈は三つの属性しかありません.username
に対応しており、着信したusername値が変わったらキャッシュ内のデータを取りに行くのではなく、getBooksByUsernameAndLanguage
方法を実行する.(これは必須です.usernameが変わったので、戻り値が変わります.キャッシュのデータが合わなくなりました.このオプションが重要です.)springはデフォルトでは方法の署名をkeyとしています.@Cacheable
がやっている鬼かどうか覚えてください.補足:実際には、第2の呼び出し方法の場合、springは
getBooksByUsernameAndLanguage
方法を実行する前にキャッシュに行って該当するデータがあるかどうかを確認します.あったら、方法を実行しません.いいえ、実行します.