Spring Cache使用方法與Spring對事務(wù)管理的配置相似瓣赂。Spring Cache的核心就是對某 個方法進(jìn)行緩存,其實質(zhì)就是緩存該方法的返回結(jié)果猪钮,并把方法參數(shù)和結(jié)果用鍵值對的 方式存放到緩存中好爬,當(dāng)再次調(diào)用該方法使用相應(yīng)的參數(shù)時即彪,就會直接從緩存里面取出指 定的結(jié)果進(jìn)行返回。
1评甜、常用注解
@Cacheable # 使用這個注解的方法在執(zhí)行后會緩存其返回的結(jié)果
@CacheEvict # 使用這個注解的方法在其執(zhí)行前或執(zhí)行后移除Spring Cache中的某些元素
2灰粮、實例
在ArticleService的findById方法添加緩存注解,這樣當(dāng)此方法第一次運行忍坷,在緩存中沒有找到對應(yīng)的value和key粘舟,則將查詢結(jié)果放入緩存。
/**
* 根據(jù)ID查詢實體
* @param id
* @return
*/
@Cacheable(value="article",key="#id")
public Article findById(String id) {
return articleDao.findById(id).get();
}
當(dāng)我們對數(shù)據(jù)進(jìn)行刪改的時候佩研,需要更新緩存柑肴。其實更新緩存也就是清除緩存,因為清除緩存后旬薯,用戶再次調(diào)用查詢方法無法提取緩存會重新查找數(shù)據(jù)庫中的記錄并放入緩存嘉抒。
/**
* 修改
* @param gathering
*/
@CacheEvict(value="article",key="#article.id")
public void update(Article article) {
articleDao.save(article);
}
/**
* 刪除
* @param id
*/
@CacheEvict(value="article",key="#id")
public void deleteById(String id) {
articleDao.deleteById(id);
}