《SpringBoot笔记续篇》是对Spring Boot框架深入学习和应用实践的总结与分享,包含了作者在项目开发中遇到的问题及解决方案。
### Spring Boot与缓存
#### JSR107 Java Caching定义了5个核心接口:CachingProvider、CacheManager、Cache、Entry 和 Expiry。
- **CachingProvider** 定义了创建、配置、获取、管理和控制多个 CacheManager 的方法。一个应用可以使用多个 CachingProvider。
- **CacheManager** 负责管理在上下文中的命名缓存,每一个 Cache 仅被一个 CacheManager 所拥有。
- **Cache** 类似于 Map 数据结构,用于临时存储以 Key 索引的值。
- **Entry** 是存储在 Cache 中的一个键值对(Key-value 对)。
- **Expiry** 每个缓存条目都有定义的有效期。超过这个时间后,条目将被视为过期,并且不可访问、更新或删除。
#### Spring 缓存抽象
Spring 从版本3.1 开始引入了 `org.springframework.cache.Cache` 和 `org.springframework.cache.CacheManager` 接口来统一不同的缓存技术;并支持使用 JCache(JSR-107)注解简化开发。核心概念包括:
- **Cache**:定义缓存操作的接口,Spring 提供了如 RedisCache、EhCacheCache 以及 ConcurrentMapCache 等实现。
- **CacheManager**:管理各种类型的 Cache 组件。
- 使用 Spring 缓存抽象时需要关注以下两点:
- 方法是否需要被缓存及其策略
- 如何从缓存中读取之前存储的数据
#### 几个重要概念与缓存注解
1. 常用注解包括:`@Cacheable`, `@CacheEvict`, `@CachePut`, 以及 `@EnableCaching`
2. 缓存数据时的 key 生成策略和 value 序列化策略
3. SPEL(Spring Expression Language)参数说明
#### 在代码中使用缓存
1. **搭建基本环境**
- 导入数据库文件,创建 department 和 employee 表。
- 创建 JavaBean 封装数据。
- 整合 MyBatis 操作数据库:
1. 配置数据源信息
2. 使用注解版的 MyBatis;例如使用 `@MapperScan` 注解指定需要扫描的 Mapper 接口所在的包。