Springboot的@Cacheable注解使用方法
概述
@Cacheable 是 Spring 框架提供的一種基于緩存的注解,它可以被應(yīng)用在方法上以指示該方法的結(jié)果需要被緩存起來,緩存在哪個(gè) Cache 中以及該方法使用何種緩存鍵。
使用 @Cacheable 注解后,每次調(diào)用該方法時(shí),首先從緩存中檢查是否有對應(yīng)的緩存值。如果緩存中已有該值,則直接返回該緩存值;否則就執(zhí)行該方法并將返回結(jié)果緩存起來以備下次使用。
@Cacheable 有以下幾個(gè)常用屬性:
- value:設(shè)置緩存所屬的緩存組件名稱,必須指定至少一個(gè)。
- key:設(shè)置方法被調(diào)用時(shí)使用的緩存鍵,支持 SpEL 表達(dá)式。如果不指定,則會(huì)使用默認(rèn)策略生成緩存鍵。
- condition:在執(zhí)行方法之前,根據(jù) SpEL 條件表達(dá)式判斷是否需要緩存,默認(rèn)為 true。
- unless:在執(zhí)行方法之后,根據(jù) SpEL 條件表達(dá)式判斷是否需要移除緩存,默認(rèn)為 false。
使用
例如,以下代碼展示了如何使用 @Cacheable 注解:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Cacheable(value = "userCache", key = "#id")
@Override
public User findById(Long id) {
// 如果用戶信息在緩存中存在,則直接返回
// 否則調(diào)用底層獲取數(shù)據(jù)的方法,并將獲取到的數(shù)據(jù)添加到緩存中
return userMapper.findById(id);
}
}上述代碼表示,當(dāng)調(diào)用 findById() 方法時(shí),Spring 將首先從名為 userCache 的緩存中檢索帶有 #id 鍵的值。如果找到已緩存的值,則此方法不會(huì)執(zhí)行。否則,將執(zhí)行該方法,并將方法返回的結(jié)果緩存起來。
對比
用這個(gè)注解和我直接使用redisTemplate做緩存有什么區(qū)別嗎?@Cacheable 注解和直接使用 RedisTemplate 進(jìn)行緩存操作最大的區(qū)別在于它們提供了不同級別的抽象層次。
使用 RedisTemplate 進(jìn)行緩存操作需要手動(dòng)寫代碼實(shí)現(xiàn)緩存的讀取、添加、更新、刪除等操作,通常需要對 Redis 調(diào)用進(jìn)行封裝并處理異常,這些都會(huì)增加代碼量和復(fù)雜度。而 @Cacheable 注解則可以將這些細(xì)節(jié)全部封裝起來,從而簡化了開發(fā)人員的操作。
此外,通過 @Cacheable 注解所設(shè)置的緩存管理器還支持多種緩存類型,例如 Ehcache、Guava、Infinispan 等,并且可以輕松地切換緩存類型。
總之,使用 @Cacheable 注解不僅能夠?yàn)槲覀儙砀啙?、易懂的代碼,同時(shí)也帶來了更好的可擴(kuò)展性和靈活性,可以讓我們更加專注于業(yè)務(wù)本身的邏輯實(shí)現(xiàn)。
到此這篇關(guān)于Springboot的@Cacheable注解使用方法的文章就介紹到這了,更多相關(guān)Springboot @Cacheable注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
RabbitMQ交換機(jī)使用場景和消息可靠性總結(jié)分析
這篇文章主要為大家介紹了RabbitMQ交換機(jī)使用場景和消息可靠性總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
mybatis.type-aliases-package之巨坑的解決
這篇文章主要介紹了mybatis.type-aliases-package之巨坑的解決,具有很好的參考價(jià)值,希望對大家有所幫助。2021-09-09
java中BigDecimal里面的subtract函數(shù)介紹及實(shí)現(xiàn)方法
在Java中實(shí)現(xiàn)減法操作需要根據(jù)數(shù)據(jù)類型選擇不同方法,主要分為數(shù)值型減法和字符串減法兩種場景,本文給大家介紹java中BigDecimal里面的subtract函數(shù)及實(shí)現(xiàn)方法,感興趣的朋友一起看看吧2025-06-06
如何解決Idea沒有elementui標(biāo)簽的代碼提示問題
這篇文章主要介紹了如何解決Idea沒有elementui標(biāo)簽的代碼提示問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04

