SpringBoot整合Caffeine使用示例
作者:谢林v
Spring Boot 和 Caffeine 可以很容易地进行整合,Caffeine 是一个现代化的 Java 缓存库,提供了高性能和灵活的缓存策略,本文给大家介绍了SpringBoot整合Caffeine使用示例,需要的朋友可以参考下
简单介绍
- 在需要缓存的方法上使用
@Cacheable
注解来缓存方法的返回值:
import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @Service public class MyService { @Cacheable(cacheNames = "myCache", key = "#id") public String getExpensiveDataById(Integer id) { // 模拟耗时操作 return "Some expensive data for id: " + id; } }
getExpensiveDataById
方法的结果将根据传入的id
被缓存。如果同样的id
再次请求,将直接从缓存中获取结果,而不会执行方法体中的耗时操作。
cacheNames
属性定义了缓存的逻辑名称,它是一个字符串。在Spring的缓存框架中,这个名称被用来唯一标识一个缓存区域。
缓存区域是底层缓存存储中的一部分,可以把它想象成一个命名的存储空间,其中可以存放多个键值对。每个缓存名称对应一个缓存区域。
缓存区域内部以键值对的形式存储数据。每个键值对包含一个键(key)和相应的值(value)。
- 使用
@CacheEvict
注解手动清除缓存。
import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; @Service public class MyService { @CacheEvict(cacheNames = "myCache", allEntries = true) public void clearMyCache() { // 清除名为myCache的缓存中的所有项 } }
示例
新建一个Spring项目。Caffeine已经作为默认的缓存库被包含在Spring Boot的依赖中,所以通常不需要显式添加Caffeine的依赖。
配置相关属性
# application.properties 示例 spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=30m
Controller
@RestController @Slf4j public class MyController { @Resource private MyService myService; @GetMapping("/cache") public String cache() { log.info("收到了增加缓存请求"); return myService.getExpensiveDataById(1); } @GetMapping("/cache/del") public void delCache() { log.info("收到了删除缓存请求"); myService.deleteExpensiveDataById(1); } }
Service
@Service @Slf4j public class MyService { @Cacheable(cacheNames = "myCache", key = "#id") public String getExpensiveDataById(Integer id) { // 模拟耗时操作 log.info("执行了操作"); return "Some expensive data for id: " + id; } @CacheEvict(cacheNames = "myCache", key = "#id") public void deleteExpensiveDataById(Integer id) { // 模拟删除操作 log.info("执行了删除操作"); } }
测试步骤
1. 运行项目,打开浏览器,输入请求地址localhost:8080/cache
,看到日志输出如下:
2. 刷新地址,发现日志输出如下:
3. 说明这次请求走了缓存 3. 输入请求地址localhost:8080/cache/del
,日志输出如下
4. 再次请求地址lcoalhost:8080/cache
,日志输出如下
说明上一次的删除缓存已经起效果。
到此这篇关于SpringBoot整合Caffeine使用示例的文章就介绍到这了,更多相关SpringBoot整合Caffeine内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!