SpringBoot缓存篇01——@Cacheable属性介绍和简单使用

  • Post author:
  • Post category:其他


在开始之前先说明我的笔记是通过学习

尚硅谷

的课程总结的,感谢尚硅谷的大师。



第一步:开启基于注解的缓存



开启方法:给SpringBoot的主程序类加上

@EnableCaching

注解即可

在这里插入图片描述



第二步:使用@Cacheable注解进行缓存操作



一、@Cacheable



概述:使用缓存(方法注解:最好标注在Service层的方法上)。


这个注解有很多属性,一起看看@Cacheable底层源码,然后分析一下这些注解:
package org.springframework.cache.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.Callable;
import org.springframework.core.annotation.AliasFor;

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Cacheable {

	@AliasFor("cacheNames")
	String[] value() default {}; //指定组件名称
	
	@AliasFor("value")
	String[] cacheNames() default {};//指定组件名称

	String key() default "";//指定缓存键值key

	String keyGenerator() default "";//指定缓存生成器

	String cacheManager() default "";//指定缓存管理器

	String cacheResolver() default "";//指定缓存解析器
	
	String condition() default "";//条件——符合条件则缓存

	String unless() default "";//条件——除非,否定缓存,符合条件则不缓存
	
	boolean sync() default false;//异步缓存

}



用法介绍:


用法一 :

@Cacheable(cacheNames ="自定义的缓存组件名字") 


案例:




这样就算是完成了最基本的缓存,下次再发送这个请求时将不会再次访问数据库,而是直接获取缓存组件中的数据。


用法二:

因为缓存是使用key-value的形式缓存,所以我们可以自定义key,用法一中没有指定key也能运行是因为key有默认值(默认值为方法第一个参数)。那么一起看看自定义key怎么搞:

@Cacheable(cacheNames ="自定义的缓存组件名字",key ="指定数据缓存的键值,如果不指定则默认使用方法参数作为缓存键值") 

更神奇的是我们可以通过

特定的写法

获取到

被注解方法

的各种信息来作为key值,具体如下:

在这里插入图片描述


案例:


在这里插入图片描述

别的留着琢磨吧,不举例了。


用法三:

条件缓存,满足条件才缓存,不满足则不缓存

在这里插入代码片


案例:


在这里插入图片描述

别的就不一一举例了。



版权声明:本文为qq_41008818原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。