写在前面:
继续记录自己的SpringBoot学习之旅,这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用!
3.5 整合第三方技术
3.5.1 缓存
3.5.1.1 介绍
- 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质
- 使用缓存可以有效的减少低速数据读取过程的次数,提高系统性能
- 缓存不仅可以用于提高永久性存储介质的数据读取速率,还可以提供临时的数据存储空间
3.5.1.2 SpringBoot缓存(默认为Simple)
- 设置缓存坐标,如图
![![[Pasted image 20220903171625.png]]](https://img-blog.csdnimg.cn/30550abbc79d4f90b12c56ee3ccbe1b8.png)
- 启用缓存,如图
![![[Pasted image 20220903171639.png]]](https://img-blog.csdnimg.cn/2e3b92e415c24c788484a4c417cfc575.png)
- 对应操作开启缓存,如图
![![[Pasted image 20220903171716.png]]](https://img-blog.csdnimg.cn/e4fe74251e4641fb8d0c2865156069b4.png)
3.5.1.3 缓存使用案例–手机验证码
3.5.1.3.1 需求
- 输入手机号获取验证码,组织文档以短信形式发送用户,这里仅仅是页面模拟
- 输入手机号和验证码进行验证结果
3.5.1.3.2 需求分析
- 提供controller,传入手机号,业务层通过手机号计算出独有的6位验证码数据,并存储到缓存后返回数据
- 提供controller,传入手机号,业务层通过手机号从缓存中拿出验证码并与输入验证码进行匹配返回结果
3.5.1.3.3 代码操作
- 创建项目并添加控制层controller,实体类层entity,业务层service以及相应的实现,如图
![![[Pasted image 20220904141629.png]]](https://img-blog.csdnimg.cn/0c0a9d8d124948a9a2d208834538734b.png)
- controller如图
![![[Pasted image 20220904141751.png]]](https://img-blog.csdnimg.cn/b47265eb0c8c4122825bf93caace4fcc.png)
- 实体类层如图
![![[Pasted image 20220904141819.png]]](https://img-blog.csdnimg.cn/cf5225ca2ab445ca91563fa8129b6d57.png)
- 业务层及相应接口实现层如图
![![[Pasted image 20220904141901.png]]](https://img-blog.csdnimg.cn/5af44a6280c54b3db1e91665feabdac2.png)
- 工具类层如图
![![[Pasted image 20220904141947.png]]](https://img-blog.csdnimg.cn/6784a595fac64b608e7870734561756d.png)
- 在postman或者Apifox中创建接口,进行测试后发现在意料之中,如图
![![[Pasted image 20220904142038.png]]](https://img-blog.csdnimg.cn/af46180511394b29aef263481a4e1748.png)
3.5.1.4 EhCache缓存技术使用
注:在上文项目里更改
3.5.1.4.1 加入坐标
<!--ehcache坐标-->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
3.5.1.4.2 配置缓存技术
# 配置cache使用技术
spring:
cache:
type: ehcache
ehcache:
config:ehcache.xml
ehcache.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<ehcache xmlns="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="false">
<!-- 默认缓存策略
external:是否永久存在,设置为true不会被清除,此时与timeout冲突,可改为false
diskPersistent:是否启用磁盘永久化
maxElementInMemory:最大缓存数量
overFLowToDisk:超过最大缓存数量是否持久化到磁盘
timeToIdleSeconds最大不活动间隔,太长缓存容易溢出
timeToLiveSeconds:最大存活时间
memoryStoreEvictionPolicy缓存清理策略
-->
<defaultCache
eternal="false"
diskPersistent="false"
maxElementsInMemory="1000"
overflowToDisk="false"
timeToIdleSeconds="60"
timeToLiveSeconds="60"
memoryStoreEvictionPolicy="LRU"/>
<cache name="SMSCode"
eternal="false"
diskPersistent="false"
maxElementsInMemory="1000"
overflowToDisk="false"
timeToIdleSeconds="60"
timeToLiveSeconds="60"
memoryStoreEvictionPolicy="LRU"/>
</ehcache>
3.5.1.5 Redis缓存技术使用
3.5.1.5.1 添加坐标
<!-- 使用redis缓存技术-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
3.5.1.5.2 配置Redis
spring:
# 使用redis缓存技术
cache:
type: redis
redis:
use-key-prefix: true
key-prefix: cache_
time-to-live: 5s
redis:
host: localhost
port: 6379
注:其它类似上文
![2022/11/21[指针] 多维数组与指针的联系](https://img-blog.csdnimg.cn/f930824f9efa442ebc228e448f149dd8.png)

















