1、了解JSR-107:
JSR是Java Specification Requests 的缩写 ,Java规范请求。
Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry:
• CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可 以在运行期访问多CachingProvider。
• CacheManager定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache 存在于CacheManager的上下文中。一个CacheManager仅被一个CachingProvider所拥有。
• Cache是一个类似Map的数据结构并临时存储以Key为索引的值。一个Cache仅被一个 CacheManager所拥有。
• Entry是一个存储在Cache中的key-value对。
• Expiry 每一个存储在Cache中的条目有一个定义的有效期。一旦超过这个时间,条目为过期 的状态。一旦过期,条目将不可访问、更新和删除。缓存有效期可以通过ExpiryPolicy设置。
2、Spring缓存抽象:
直接使用JSR-107开发复杂性较高,Spring3.1只保留了2个核心概念:Cache和CacheManager。定义了org.springframework.cache.Cache 和org.springframework.cache.CacheManager接口来统一不同的缓存技术; 并支持使用JCache(JSR-107)注解简化我们开发;
几个重要的概念和缓存注解:
3、缓存使用:
3.1、引入spring-boot-starter-cache模块
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> |
3.2、@EnableCaching开启缓存(注解加到主程序类上)
@MapperScan("com.atguigu.cache.mapper") public static void main(String[] args) {
|
3.3、使用缓存注解
@Cacheable注解:
根据key先去缓存中查找,如果查找不到就去调用目标方法。