Spring Boot 缓存源码解析时序图
2021-07-20 18:55:23 50 举报
Spring Boot 缓存源码解析时序图
作者其他创作
大纲/内容
进入我们的实现类,开始执行查询操作
1
该配置类被 @Import 注解①通过 CacheConfigurationImportSelector.class为该类自动导入了默认的相关缓存配置类②通过 CacheManagerEntity...... 这个类,完成一些其他相关操作
2
调用generateKey()方法,生成一个key
调用内部类CacheConfigurationImportSelector中的selectImports() 方法来加载默认实现的缓存配置
调用 getCache( )方法
发现缓存为 null开始调用 createConcurrentMapCache()方法,创建缓存
直接返回缓存
第一次请求时,用户通过 Url 连接方式调用请求:http://localhost:8080/user/1
@Cacheable获取缓存数据流程
CacheAutoConfiguration
(因为 SimpleCacheConfiguration是 Spring Boot 的缓存默认配置项)
缓存中查找是否存在这条数据
第二次发送相同请求时
完成其他一些操作后,此时Spring Boot 项目启动完成
我们自己的Service实现类
判断缓存中是否有值,如果有,直接返回
如果没有
Spring Boot 缓存自动配置流程
共10种缓存实现
①如果我们配置了生成 key 的策略,则使用我们自定义的keyGenerator策略来生成 key
Spring 1.x 版本中是 11 种,2.x 版本中舍去一种
调用 findCachedItem() 方法
调用 put() 方法,将数据存入到缓存中去
如果为 null
如果时序图对您有用,请在右上角给点个赞吧。5个赞我能多一张文件,支持作者继续画出更好的时序图给大家,谢谢大家支持配套博客介绍:请搜索CSDN 扛麻袋的少年
调用SimpleCacheConfiguration类中的cacheManager()方法
ConcurrentMapCacheManager可以获取和创建ConcurrentMapCache类型的缓存组件; 它的作用是将数据保存在ConcurrentMap中;
发现缓存有值,直接返回
该请求已开启缓存
②否则,使用默认的keyGenerator,默认使用SimpleKeyGenerator 类来生成 keySimpleKeyGenerator 生成key 的默认策略分 3 种; 如果请求没有参数:key=new SimpleKey(); 如果请求有一个参数:key=参数的值 如果请求有多个参数:key=newSimpleKey(params);
ConcurrentMapCacheManager
调用invokeOperation()方法
ConcurrentMapCache
如果有
CacheAspectSupport
给容器中注册了一个 CacheManager 缓存管理器:ConcurrentMapCacheManager
SimpleCacheConfiguration
0 条评论
回复 删除
下一页