1.3. Spring キャッシュアノテーション
@Cacheable
および @CacheEvict
アノテーションは、メソッドにキャッシュ機能を追加します。
@Cacheable
- 戻り値をキャッシュに保存します。
@CacheEvict
- 古いエントリーを削除してキャッシュサイズを制御します。
@Cacheable
Book
オブジェクトを例ととすると、BookDao#findBook(Integer bookId)
などのメソッドのデータベースから読み込み後に各インスタンスをキャッシュしたい場合は、以下のように @Cacheable
アノテーションを追加します。
@Transactional @Cacheable(value = "books", key = "#bookId") public Book findBook(Integer bookId) {...}
上記の例では、findBook(Integer bookId)
が books
という名前のキャッシュに保存されている Book
インスタンスを返す場合。
@CacheEvict
@CacheEvict
アノテーションを使用すると、books
キャッシュ全体をエビクトするか、特定の #bookId に一致するエントリーのみを削除するかどうかを指定できます。
キャッシュエビクション全体
deleteAllBookEntries()
メソッドに @CacheEvict
のアノテーションを付け、以下のように allEntries
パラメーターを追加します。
@Transactional @CacheEvict (value="books", key = "#bookId", allEntries = true) public void deleteAllBookEntries() {...}
エントリーベースのエビクション
deleteBook(Integer bookId)
メソッドに @CacheEvict
のアノテーションを付け、以下のようにエントリーに関連付けられたキーを指定します。
@Transactional @CacheEvict (value="books", key = "#bookId") public void deleteBook(Integer bookId) {...}