Spring之Cache——Spring缓存架构解读
- Spring之Cache架构
- 缓存架构的概述
- 缓存架构的实现
- 缓存架构的操作原理
Spring Cache
概述
接下来将对Spring的缓存模块进行解读,主要内容分为:缓存的介绍、缓存的实现、两个部分。由于应用部分在网上的教程比较多,例如采用redis等,这里就不再重复了,只讲解Cache架构。
一.缓存架构的概述
- 作用与功能
- 拓展性
1.作用与功能
Spring中有一个高速缓存架构,名为Cache,顾名思义,即为一些数据查询等提供高速的数据缓存,从而提高响应速度。
2.拓展性
Cache架构,并没有指定具体的缓存中间件,因此,有着极佳的拓展性。我们可以根据实际业务选择Redis、Memcached等内存数据库充当缓存中间件。
二.缓存架构的实现
- 缓存架构的位置
- 架构源码的解读
1.缓存架构的位置
如果您读过Spring的源码,应该知道Spring的架构拓展主要位于spring - context项目。无一例外,缓存的架构拓展就是处于Spring-context项目。
以下是缓存架构的包结构图:
可以看到,该缓存架构分为annotation
、concurrent
、config
、interceptor
、support
五大包。
2.架构源码的解读
- 架构模块介绍
- annotation注解包
- concurrent并发包
- config配置包
- intercetor拦截器包
- support包
1.annotation
该包的功能为提供使用缓存的注解、以及包含对注解的解析。有如下(以下注解的具体应用会在第三部分讲解):
@Cacheable
@CacheEvict
@CachePut
@Caching
@EnableCaching
@CacheConfig
这里重点讲解注解的解析工作,由缓存注解解析器开始:
CacheAnnotationParser.class
翻看源码,发现该类是一个定义了两个方法的接口。
public interface CacheAnnotationParser {
/**
* 解析给定类的缓存定义,
* 基于此解析器理解的注释类型。
* <p>这实质上将已知的缓存注释解析为Spring的元数据
* 属性类。如果类不可缓存,则返回{@code null}。
*
* @param键入带注释的类
* @return配置的缓存操作,如果没有找到,则返回{@code null}