基本概念
Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来同意不同的缓存技术(Spring也支持JCache即JSR-107)。
Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;
Cache接口下Spring提供了各种xxx.Cache的实现;如:RedisCache,EhCacheCache,ConcurrentMapCache等;
每次调用需要缓存功能的方法时,Spring会检查指定参数的指定目标方法是否已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。
ps:使用Spring缓存抽象时我们需要关注以下两点;
1.确定方法需要被缓存以及他们的缓存策略
2.从缓存中读取之前缓存存储的数据
重要概念及缓存注解
概念 | 解释 |
---|---|
Cache | 缓存接口,定义缓存操作 |
CacheManager | 缓存管理器,CacheManager管理多个Cach组件,对缓存的真正CRUD操作在Cache组件中,每一个缓存组件有自己唯一一个名字。 |
@Cacheable | 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存。 |
@CacheEvict | 清空缓存 |
@CachePut | 保证方法被调用,又希望结构被缓存 |
@EnableCaching | 开启基于注解的缓存 |
keyGenerator | 缓存数据时key的生成策略 |
serialize | 缓存数据时value序列化策略 |
创建项目
大专栏 Springboot_Cache-1导入的模块:Cache、Web、MySQL、Mybatis
搭建基本环境
1.导入数据库文件,创建department和employee表
2.创建javaBean封装数据
3.整合Mybatis操作数据库
1.配置数据源信息
1 |
spring.datasource.url=jdbc:mysql://localhost:3306/spring_cache?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC |
2.使用注解版的Mybatis
@MapperScan指定需要扫描的mapper接口所在的包
快速体验缓存
步骤
1.开启基于注解的缓存 @EnableCaching
2.标注缓存注解
@Cacheable
@CacheEvict
@CachePut
ps: 可以通过下面的java语句在控制台输出SQL语句日志
1 |
logging.level.com.zjg.cache.mapper(包的真名) =debug |