Spring的缓存

1.Spring 缓存介绍

1.1 Spring 缓存简介

Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现。它支持注解方式使用缓存,非常方便。

1.2 缓存管理器

Spring 3.1内置了五个缓存管理器实现,如下所示:
- SimpleCacheManager
- NoOpCacheManager
- ConcurrentMapCacheManager
- CompositeCacheManager
- EhCacheCacheManager

Spring 3.2引入了另外一个缓存管理器,这个管理器可以用在基于JCach e(JSR-107)的缓存提供商之中。除了核心的Spring框架,Spring Data又提供了两个缓存管理器:
- RedisCacheManager(来自于Spring Data Redis项目)
- GemfireCacheManager(来自于Spring Data GemFire项目)


2. Spring 缓存使用

2.1 注解方式

@Cacheable

说明: 表明Spring在调用方法之前,首先应该在缓存中查找方法的返回值。如果这个值能够找到,就会返回缓存的值。否则的话,这个方法就会被调用,返回值会放到缓存之中

@CachePut

说明: 表明Spring应该将方法的返回值放到缓存中。在方法的调用前并不会检查缓存,方法始终都会被调用

参数 作用 例 (@Cacheable和@CachePut)
value 缓存的名称,在spring 配置文件中定义,必须指定至少一个 @Cacheable(value=”mycache”) @Cacheable(value={”cache1”,”cache2”}
key 缓存的key,可以为空,如果指定要按照SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合 @Cacheable(value=”testcache”,key=”#userName”)
condition 缓存的条件,可以为空,使用SpEL编写,返回true或者false只有为true才进行缓存 @Cacheable(value=”testcache”,condition=”#userName.length()>2”)
unless SpEL表达式,可以为空,如果得到的值是true的话,返回值不会放到缓存之中

@CacheEvict

说明: 表明Spring应该在缓存中清除一个或多个条目

参数 作用 例 @CacheEvict)
value 缓存的名称,在spring 配置文件中定义,必须指定至少一个 @CacheEvict(value=”mycache”) @Cacheable(value={”cache1”,”cache2”}
key 缓存的key,可以为空,如果指定要按照SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合 @CachEvict(value=”testcache”,key=”#userName”)
condition 缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才清空缓存 @CachEvict(value=”testcache”,condition=”#userName.length()>2”)
allEntries 是否清空所有缓存内容,缺省为 false,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring框架提供了多个缓存级别供开发者选择和配置。其中包括: 1. 类级别缓存:通过在类级别上使用`@CacheConfig`注解,可以为整个类的方法启用缓存。这意味着类中的所有方法都将使用相同的缓存配置。 2. 方法级别缓存:通过在方法上使用`@Cacheable`注解,可以为特定的方法启用缓存。这样,每次调用该方法时,Spring会首先检查缓存中是否存在相应的结果,如果存在,则直接返回缓存中的值,而不执行方法体。 3. 更新缓存:通过`@CachePut`注解,可以在方法执行后将结果存储到缓存中。这对于需要更新缓存的方法非常有用,例如在更新数据库记录后,同时更新缓存。 4. 清除缓存:通过`@CacheEvict`注解,可以清除指定的缓存。这对于需要在方法执行后清除缓存的情况非常有用,例如在删除数据库记录后,同时清除缓存。 需要注意的是,Spring框架本身并不提供具体的缓存实现,而是通过与各种缓存方案的整合来实现缓存功能。开发者可以根据自己的需求选择合适的缓存实现,如Caffeine、Guava Cache、Ehcache等。通过配置`CacheManager`组件,可以将这些缓存实现集成到Spring框架中。 综上所述,Spring框架提供了多个缓存级别,包括类级别缓存、方法级别缓存、更新缓存和清除缓存。开发者可以根据需要选择和配置适合的缓存实现。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [缓存-SpringCache](https://blog.csdn.net/weixin_68829137/article/details/127164634)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [最通俗的方法让你搞懂spring缓存机制](https://blog.csdn.net/qq_29235677/article/details/121685290)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值