Spring Cache是Spring-context-xxx.jar中提供的功能,可以结合EHCache、Redis等缓存工具使用。方便的实现缓存的处理和基本判断,可以直接使用注解实现。
在包含了Spring-context-xxx.jar的spring boot项目中,启动类上添加EnableCaching注解即可开启缓存功能。默认缓存不开启
优点:基于注解实现缓存管理。
缺点:流程死板,不能添加逻辑。
Spring Cache加载缓存工具数据
只要检测到项目中配置了下面缓存工具(导入了依赖,在spring容器中发现对应工具的内容),无论导入了多少个缓存工具用于只用最前面的一个。
默认寻找缓存工具的顺序:
1. Generic
2.JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, and others)
3.EhCache 2.x
4.Hazelcast
5.Infinispan
6.Couchbase
7.Redis
8.Caffeine
9.Simple
查询所有的数据
cacheable—查询缓存的注解
固定流程
1、根据key访问缓存服务器,查询数据
2、判断缓存查询结果
缓存查询有结果,直接返回结果,当前的方法不执行
缓存中没有结果,进入后续流程
3、执行当前方法代码逻辑
4、代码返回值作为value,保存到缓存服务器中
5、返回方法的返回结果。
属性:
完成的缓存key是:cacheName+”: :”+key
cacheName:缓存key的前缀,字符串类型,只能使用字符串字面值赋值,即常量赋值。
key:缓存key的后缀。字符串类型,可以使用字符串字面值和SpringEl表达式赋值。赋值的时候如果是字符串的字面值,必须使用 ‘ ‘ 标记。
springEL表达式直接编写。可用的是各种Spring可识别的变量。
如根对象root。返回结果Result。方法参数 参数名。
root : 代表的是当前执行的方法对应的对象。对象中包含当前方法所有的相关数据。如:
方法名- root.methodName
方法对象- root.method
方法参数表数组- root.method.args
方法参数表的0下标- root.method.args[0]