SpringCache快速使用及入門案例
概述
Spring Cache是Spring框架提供的一個緩存抽象層,用于在應用程序中實現(xiàn)緩存的功能。它通過在方法執(zhí)行前檢查緩存中是否已經(jīng)存在所需數(shù)據(jù),如果存在則直接返回緩存中的數(shù)據(jù),如果不存在則執(zhí)行方法體,將方法的返回值存儲到緩存中,以便后續(xù)的請求可以直接從緩存中獲取數(shù)據(jù)。
Spring Cache的主要特性如下:
聲明式緩存:通過使用注解或XML配置的方式,可以很方便地將緩存邏輯應用到方法上。開發(fā)人員只需要在需要被緩存的方法上添加相應的注解,如@Cacheable、@CachePut等,Spring框架會自動處理緩存的讀取和更新操作。
緩存注解支持:Spring Cache提供了多種緩存注解,包括@Cacheable、@CachePut、@CacheEvict等,用于標記具體的方法需要進行緩存的讀取、更新和清除操作。通過這些注解,開發(fā)人員可以靈活地控制緩存的行為和策略。
多種緩存技術支持:Spring Cache支持多種常見的緩存技術,如Ehcache、Redis、Caffeine等。開發(fā)人員可以根據(jù)實際需求選擇合適的緩存提供商,并通過簡單的配置即可接入相應的緩存技術。
緩存管理器:Spring Cache提供了緩存管理器的抽象,可以統(tǒng)一管理和配置應用程序中的緩存。開發(fā)人員可以通過配置文件或編程方式定義緩存管理器的屬性和行為,以滿足不同環(huán)境和需求的緩存配置。
可擴展性:Spring Cache具有良好的可擴展性,支持自定義緩存注解和緩存操作的實現(xiàn)。開發(fā)人員可以根據(jù)自己的需求擴展并定制Spring Cache的功能,以適應特定的業(yè)務場景。
使用Spring Cache可以有效地減少重復計算和數(shù)據(jù)庫訪問等耗時操作,提升系統(tǒng)的響應速度和性能。它提供了簡單而強大的API和注解,使得開發(fā)人員能夠更加輕松地實現(xiàn)緩存功能,并與Spring框架的其他模塊無縫集成。
常用注解
在SpringCache中提供了很多緩存操作的注解,常見的是以下的幾個:
| 注解 | 說明 |
|---|---|
| @EnableCaching | 開啟緩存注解功能,通常加在啟動類上 |
| @Cacheable | 在方法執(zhí)行前先查詢緩存中是否有數(shù)據(jù),如果有數(shù)據(jù),則直接返回緩存數(shù)據(jù);如果沒有緩存數(shù)據(jù),調(diào)用方法并將方法返回值放到緩存中 |
| @CachePut | 將方法的返回值放到緩存中 |
| @CacheEvict | 將一條或多條數(shù)據(jù)從緩存中刪除 |
在spring boot項目中,使用緩存技術只需在項目中導入相關緩存技術的依賴包,并在啟動類上使用@EnableCaching開啟緩存支持即可。
例如,使用Redis作為緩存技術,只需要導入Spring data Redis的maven坐標即可。
入門案例
下面是一個使用Redis作為緩存技術的Spring Cache入門案例:
首先,確保在項目的依賴中添加以下相關依賴:
<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>接下來,你需要在Spring Boot的配置文件(如application.properties或application.yml)中添加Redis的連接信息,例如:
spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=
然后,你可以創(chuàng)建一個UserService接口,用于定義用戶相關的服務方法:
public interface UserService {
User getUserById(Long id);
}接著,創(chuàng)建一個實現(xiàn)了UserService接口的UserServiceImpl類:
@Service
public class UserServiceImpl implements UserService {
@Override
@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
// 模擬從數(shù)據(jù)庫或其他數(shù)據(jù)源獲取用戶信息
System.out.println("查詢數(shù)據(jù)庫獲取用戶信息,用戶ID:" + id);
return new User(id, "John Doe");
}
}在上述代碼中,我們使用了@Cacheable(value = "users", key = "#id")注解來標記getUserById方法需要進行緩存。這里的"users"是緩存名稱,表示將結果緩存到名為"users"的緩存中,key = "#id"表示緩存的key是方法的參數(shù)id。
最后,你可以編寫一個簡單的測試類來驗證緩存的效果:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testGetUserById() {
// 第一次調(diào)用,會執(zhí)行方法內(nèi)部的邏輯,從數(shù)據(jù)庫中查詢用戶信息
User user1 = userService.getUserById(1L);
System.out.println(user1);
// 第二次調(diào)用,應該從緩存中獲取用戶信息,不再執(zhí)行方法內(nèi)部的邏輯
User user2 = userService.getUserById(1L);
System.out.println(user2);
}
}在上述測試代碼中,第一次調(diào)用getUserById方法時,會執(zhí)行方法內(nèi)部的邏輯,從數(shù)據(jù)庫中查詢用戶信息。而第二次調(diào)用時,由于結果已經(jīng)緩存在名為"users"的緩存中,所以直接從緩存中獲取用戶信息,不再執(zhí)行方法內(nèi)部的邏輯。
通過以上方式,我們就可以使用Redis作為緩存技術來實現(xiàn)方法級別的緩存功能了。當然,在實際項目中,你還可以根據(jù)需求進一步配置緩存管理器、緩存策略等。
到此這篇關于SpringCache快速使用及入門案例的文章就介紹到這了,更多相關SpringCache 入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java框架解說之BIO NIO AIO不同IO模型演進之路
網(wǎng)上很多IO資料,對新手來說,越看越暈。根據(jù)自己的理解,總結對比了一下BIO、NIO、AIO,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-10-10
詳解SpringCloud Gateway之過濾器GatewayFilter
這篇文章主要介紹了詳解SpringCloud Gateway之過濾器GatewayFilter,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
如何自定義Jackson序列化?@JsonSerialize
這篇文章主要介紹了如何自定義Jackson序列化?@JsonSerialize,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12

