SpringCache快速使用及入門案例
概述
Spring Cache是Spring框架提供的一個(gè)緩存抽象層,用于在應(yīng)用程序中實(shí)現(xiàn)緩存的功能。它通過(guò)在方法執(zhí)行前檢查緩存中是否已經(jīng)存在所需數(shù)據(jù),如果存在則直接返回緩存中的數(shù)據(jù),如果不存在則執(zhí)行方法體,將方法的返回值存儲(chǔ)到緩存中,以便后續(xù)的請(qǐng)求可以直接從緩存中獲取數(shù)據(jù)。
Spring Cache的主要特性如下:
聲明式緩存:通過(guò)使用注解或XML配置的方式,可以很方便地將緩存邏輯應(yīng)用到方法上。開(kāi)發(fā)人員只需要在需要被緩存的方法上添加相應(yīng)的注解,如@Cacheable、@CachePut等,Spring框架會(huì)自動(dòng)處理緩存的讀取和更新操作。
緩存注解支持:Spring Cache提供了多種緩存注解,包括@Cacheable、@CachePut、@CacheEvict等,用于標(biāo)記具體的方法需要進(jìn)行緩存的讀取、更新和清除操作。通過(guò)這些注解,開(kāi)發(fā)人員可以靈活地控制緩存的行為和策略。
多種緩存技術(shù)支持:Spring Cache支持多種常見(jiàn)的緩存技術(shù),如Ehcache、Redis、Caffeine等。開(kāi)發(fā)人員可以根據(jù)實(shí)際需求選擇合適的緩存提供商,并通過(guò)簡(jiǎn)單的配置即可接入相應(yīng)的緩存技術(shù)。
緩存管理器:Spring Cache提供了緩存管理器的抽象,可以統(tǒng)一管理和配置應(yīng)用程序中的緩存。開(kāi)發(fā)人員可以通過(guò)配置文件或編程方式定義緩存管理器的屬性和行為,以滿足不同環(huán)境和需求的緩存配置。
可擴(kuò)展性:Spring Cache具有良好的可擴(kuò)展性,支持自定義緩存注解和緩存操作的實(shí)現(xiàn)。開(kāi)發(fā)人員可以根據(jù)自己的需求擴(kuò)展并定制Spring Cache的功能,以適應(yīng)特定的業(yè)務(wù)場(chǎng)景。
使用Spring Cache可以有效地減少重復(fù)計(jì)算和數(shù)據(jù)庫(kù)訪問(wèn)等耗時(shí)操作,提升系統(tǒng)的響應(yīng)速度和性能。它提供了簡(jiǎn)單而強(qiáng)大的API和注解,使得開(kāi)發(fā)人員能夠更加輕松地實(shí)現(xiàn)緩存功能,并與Spring框架的其他模塊無(wú)縫集成。
常用注解
在SpringCache中提供了很多緩存操作的注解,常見(jiàn)的是以下的幾個(gè):
注解 | 說(shuō)明 |
---|---|
@EnableCaching | 開(kāi)啟緩存注解功能,通常加在啟動(dòng)類上 |
@Cacheable | 在方法執(zhí)行前先查詢緩存中是否有數(shù)據(jù),如果有數(shù)據(jù),則直接返回緩存數(shù)據(jù);如果沒(méi)有緩存數(shù)據(jù),調(diào)用方法并將方法返回值放到緩存中 |
@CachePut | 將方法的返回值放到緩存中 |
@CacheEvict | 將一條或多條數(shù)據(jù)從緩存中刪除 |
在spring boot項(xiàng)目中,使用緩存技術(shù)只需在項(xiàng)目中導(dǎo)入相關(guān)緩存技術(shù)的依賴包,并在啟動(dòng)類上使用@EnableCaching開(kāi)啟緩存支持即可。
例如,使用Redis作為緩存技術(shù),只需要導(dǎo)入Spring data Redis的maven坐標(biāo)即可。
入門案例
下面是一個(gè)使用Redis作為緩存技術(shù)的Spring Cache入門案例:
首先,確保在項(xiàng)目的依賴中添加以下相關(guān)依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
接下來(lái),你需要在Spring Boot的配置文件(如application.properties或application.yml)中添加Redis的連接信息,例如:
spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=
然后,你可以創(chuàng)建一個(gè)UserService接口,用于定義用戶相關(guān)的服務(wù)方法:
public interface UserService { User getUserById(Long id); }
接著,創(chuàng)建一個(gè)實(shí)現(xiàn)了UserService接口的UserServiceImpl類:
@Service public class UserServiceImpl implements UserService { @Override @Cacheable(value = "users", key = "#id") public User getUserById(Long id) { // 模擬從數(shù)據(jù)庫(kù)或其他數(shù)據(jù)源獲取用戶信息 System.out.println("查詢數(shù)據(jù)庫(kù)獲取用戶信息,用戶ID:" + id); return new User(id, "John Doe"); } }
在上述代碼中,我們使用了@Cacheable(value = "users", key = "#id")
注解來(lái)標(biāo)記getUserById方法需要進(jìn)行緩存。這里的"users"
是緩存名稱,表示將結(jié)果緩存到名為"users"的緩存中,key = "#id"
表示緩存的key是方法的參數(shù)id。
最后,你可以編寫一個(gè)簡(jiǎn)單的測(cè)試類來(lái)驗(yàn)證緩存的效果:
@RunWith(SpringRunner.class) @SpringBootTest public class UserServiceTest { @Autowired private UserService userService; @Test public void testGetUserById() { // 第一次調(diào)用,會(huì)執(zhí)行方法內(nèi)部的邏輯,從數(shù)據(jù)庫(kù)中查詢用戶信息 User user1 = userService.getUserById(1L); System.out.println(user1); // 第二次調(diào)用,應(yīng)該從緩存中獲取用戶信息,不再執(zhí)行方法內(nèi)部的邏輯 User user2 = userService.getUserById(1L); System.out.println(user2); } }
在上述測(cè)試代碼中,第一次調(diào)用getUserById方法時(shí),會(huì)執(zhí)行方法內(nèi)部的邏輯,從數(shù)據(jù)庫(kù)中查詢用戶信息。而第二次調(diào)用時(shí),由于結(jié)果已經(jīng)緩存在名為"users"的緩存中,所以直接從緩存中獲取用戶信息,不再執(zhí)行方法內(nèi)部的邏輯。
通過(guò)以上方式,我們就可以使用Redis作為緩存技術(shù)來(lái)實(shí)現(xiàn)方法級(jí)別的緩存功能了。當(dāng)然,在實(shí)際項(xiàng)目中,你還可以根據(jù)需求進(jìn)一步配置緩存管理器、緩存策略等。
到此這篇關(guān)于SpringCache快速使用及入門案例的文章就介紹到這了,更多相關(guān)SpringCache 入門內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot簡(jiǎn)單實(shí)現(xiàn)快速搭建圖解
這篇文章主要介紹了Spring Boot簡(jiǎn)單實(shí)現(xiàn)快速搭建圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Mybatis 一級(jí)緩存與二級(jí)緩存的實(shí)現(xiàn)
mybatis作為一個(gè)流行的持久化工具,緩存必然是缺少不了的組件。通過(guò)這篇文章,就讓我們來(lái)了解一下一級(jí)緩存與二級(jí)緩存的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05Java結(jié)構(gòu)型設(shè)計(jì)模式之組合模式Composite Pattern詳解
組合模式,又叫部分整體模式,它創(chuàng)建了對(duì)象組的數(shù)據(jù)結(jié)構(gòu)組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的訪問(wèn)具有一致性。本文將通過(guò)示例為大家詳細(xì)介紹一下組合模式,需要的可以參考一下2022-11-11特殊數(shù)據(jù)結(jié)構(gòu)之使用Java實(shí)現(xiàn)單調(diào)棧示例
這篇文章主要為大家介紹了特殊數(shù)據(jù)結(jié)構(gòu)之使用Java實(shí)現(xiàn)單調(diào)棧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法)
這篇文章主要介紹了Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08SpringBoot?整合mybatis+mybatis-plus的詳細(xì)步驟
這篇文章主要介紹了SpringBoot?整合mybatis+mybatis-plus的步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06Spring Security OAuth2實(shí)現(xiàn)使用JWT的示例代碼
這篇文章主要介紹了Spring Security OAuth2實(shí)現(xiàn)使用JWT的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Java基于swing實(shí)現(xiàn)的彈球游戲代碼
這篇文章主要介紹了Java基于swing實(shí)現(xiàn)的彈球游戲代碼,包含了窗體界面設(shè)計(jì)與游戲的邏輯功能處理,具有不錯(cuò)的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11