SpringBoot 缓存

本文详细介绍了SpringBoot中常用的缓存注解,包括@Cacheable用于方法结果缓存,@CacheEvict用于清除缓存,@CachePut在调用方法时刷新缓存,以及@Caching用于组合复杂缓存规则。还提到了各注解的主要属性及其用法,如keyGenerator、condition、unless等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要注解

  • @Cacheable 配置在方法上,可以根据方法对其结果进行缓存
  • @CacheEvict 可以根据key进行对应缓存的清除
  • @CachePut 调用方法的同时刷新缓存
  • @EnableCaching 加载启动类开启基于注解的缓存
  • @Caching 可以定义复杂的缓存

pom坐标

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

@Cacheable注解

@Cacheable针对方法配置,可以根据方法的请求对其结果进行缓存
主要属性:

  • cacheNames/value:缓存的名字,数组形式。
  • key:缓存使用的key,需要唯一,可以编写SpEL表达式。
    如:#id 参数id,#a0 #p0 第一个参数。
  • keyGenerator:key生成器;不能与key同用。
  • condition:指定符合条件的情况下才缓存;使用SpEl表达式。
    如: condition = “#a0=1”:第一个参数的值等于1的时候才进行缓存
  • unless:否定缓存;当unless指定的条件为true,方法的返回值就不会缓存。
  • 如:unless = “#a0!=2”:如果第一个参数的值不是2,结果不缓存
  • sunc: 是否使用异步。
@Cacheable(key = "'" + CacheConst.COURSE_ONE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS)
    public Course require(String id) {
        return build(id);
    }

@CachePut注解

属性与@Cacheable类似,但每次调用方法时会更新缓存。可以放在更改的方法上,更新数据并刷新缓存。

@CacheEvic注解

主要属性:

  • key:要清除指定缓存的key。
  • allEntries = true:指定清除这个缓存中所有的数据
  • beforeInvocation = false:默认代表缓存清除操作是在方法执行之后执行
  • beforeInvocation = true:代表清除缓存操作是在方法运行之前执行
 @CacheEvict(key = "'" + CacheConst.COURSE_ONE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS)
    public void clearCache(String id) {
        // clear cache
    }

@Caching注解

用于组合复杂的缓存规则

@Caching(evict = {
                    @CacheEvict(key = "'" + CacheConst.COURSE_ONE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS),
                    @CacheEvict(key = "'" + CacheConst.COURSE_ONE_BASE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS),
                    @CacheEvict(key = "'" + CacheConst.LIVE_COURSE_ONE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS)
    })
    public void clearCache(String id) {
        // clear cache
    }
SpringBoot提供了方便的缓存支持,可以通过添加相关注解和依赖来启用和配置缓存功能。 要启用缓存功能,可以在主程序入口上添加@EnableCaching注解。例如,在SpringBoot应用的主类上添加@EnableCaching注解可以启用缓存功能。同时,还可以添加其他注解,如@SpringBootApplication、@EnableTransactionManagement等。以下是一个示例代码: ```java @SpringBootApplication @EnableTransactionManagement @EnableCaching public class SpringbootMabatisDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringbootMabatisDemoApplication.class, args); } } ``` 此外,还需要在项目的pom.xml文件中添加缓存启动器的依赖项。例如,可以添加以下依赖项来导入Spring Boot缓存启动器: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> ``` 通过添加这个依赖项,可以使用Spring Boot提供的缓存功能。 此外,Spring Boot还提供了org.springframework.cache.CacheManager接口来统一不同的缓存技术,并支持使用JCache(JSR-107)等标准缓存技术。这个接口可以帮助你在应用中管理和配置缓存。 总结起来,Spring Boot提供了简便的缓存支持,你可以通过添加@EnableCaching注解来启用缓存功能,同时在pom.xml文件中添加缓存启动器的依赖项。还可以使用org.springframework.cache.CacheManager接口来管理和配置缓存。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Springboot缓存](https://blog.youkuaiyun.com/AALouisaa/article/details/126450883)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值