spring cache
2024-03-25 23:21:45 7 举报
Spring Cache是一种为Spring应用程序提供缓存支持的框架,它提供了与各种缓存提供商集成的能力。Spring Cache的核心内容是通过注解(如@Cacheable、@CachePut和@CacheEvict)将缓存逻辑与应用程序代码分离,使得开发人员可以在不需要深入了解底层缓存实现细节的情况下,轻松实现缓存功能。 Spring Cache支持不同的缓存类型,如内存缓存(如EhCache和Caffeine)、分布式缓存(如Redis和Hazelcast)等。此外,Spring Cache还提供了与Spring Boot的紧密集成,使得开发人员可以在Spring Boot应用程序中轻松使用缓存。 Spring Cache的关键修饰语包括@Cacheable,用于将方法的返回结果缓存;@CachePut,用于更新或添加缓存;以及@CacheEvict,用于删除或清除缓存。通过使用这些注解,开发人员可以轻松地在Spring应用程序中添加缓存逻辑,提高应用程序的性能和可扩展性。
作者其他创作
大纲/内容
CacheInterceptor缓存主逻辑全在这里面
beforeInvocation默认为false
Cache#retrieve
构建CachePutRequest对象
CacheAspectSupport.CachePutRequest#apply
true
processCacheEvicts把beforeInvocation=TRUE的缓存清理掉
false
Cache#invalidate
isConditionPassing通过el表达式进行判断是否执行
Cache#get取决于实现
是
大部分实现是没有区别的一个又返回值一个没有
CacheOperationContexts
CacheAspectSupport#generateKey通过 KeyGenerator 生成Key
CacheAspectSupport#findCachedValue
CacheAspectSupport#findInCaches从缓存实现中获取缓存
找到方法上面所有的注解封信息装成CacheOperationContexts
CacheAspectSupport#getCaches获取所有的缓存管理器
缓存执行
否
CacheAspectSupport#execute核心逻辑
ture
ProxyCachingConfiguration
CacheOperationSourcePointcut通过AOP 来筛选加了注解的方法
CacheAspectSupport#processCacheEvicts对有cacheEvicts的缓存进行处理
CacheInterceptor#invoke
Cache#evictIfPresent
Cache#evict
AnnotationCacheOperationSource主要是获取方法的的跟缓存有关的注解信息
allEntries默认为false
Cache#put保存缓存的值
Cache#clear
AbstractCacheInvoker#doClear
CacheAspectSupport#performCacheEvicts
CachingConfigurationSelector
CacheAspectSupport.CachePutRequest#performCachePut
是否同步执行
performCacheEvicts对有cacheEvicts的缓存进行处理
@EnableCaching
在spring6.0开始支持对protected的方法进行代理了
返回值是否是CompletableFuture
CacheResolver#resolveCaches
executeSynchronized
AbstractCacheInvoker#doEvict
CacheManager#getCache取决于配置的是什么缓存
和事务差不多的配置方式,一个Advisor里面包含一个Advice 和 Pointcut
0 条评论
下一页