修改缓存供应商--EhCache

除了我们默认的缓存形式simlpe之外, 我们其实还有许多其他种类的缓存供应

Ehcache就是其中的一种形式

Ehcache在SpringBoot当中的使用:

其实跟我们之前整合第三方的资源是一样的形式

1>导入依赖:

复制代码
<!-- 更换缓存, 将默认使用的 Simple 更换为Ehcache--> 
<dependency> 
<groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId>
</dependency>

2>加载对应的配置文件:

配置一:

首先是有关Ehcache的相关配置 , 设置其配置的名称为:

ehcache.xml即可 默认的名称也是这样的

配置如下:

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">

    <!-- 磁盘缓存位置 -->
    <diskStore path="java.io.tmpdir/ehcache"/>

    <!-- 默认缓存 -->
    <defaultCache
            maxEntriesLocalHeap="10000"
            eternal="false"
            timeToIdleSeconds="3600"
            timeToLiveSeconds="3600"
            maxEntriesLocalDisk="10000000"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"/>
<!--第三个, 以及第四个属性 是用来设置对应的缓存的存在时间的, 超过时间就会自己自动的清空缓存-->
    <cache name="smsCode"
           maxElementsInMemory="60"
           eternal="false"
           timeToIdleSeconds="20"
           timeToLiveSeconds="20"
           overflowToDisk="false"
           memoryStoreEvictionPolicy="LRU"/>
</ehcache>

配置二:

在我们的SpringBoot的配置文件当中修改:

复制代码
#    设置我们当前使用的缓存, 默认的情况下就是一个 Simple 的类
#  我们也可以自己进行变更, 将其设置成为一个对应的 ehcache的类型
  cache:
    type: ehcache

3>开启缓存

实际上跟之前使用我们默认开启缓存的方式是一样的

第一步都是需要我们在配置类当中打开对应的缓存设置

@SpringBootApplication //配置类当中设置我们当前是允许开启缓存的` @EnableCaching public class Spring19CacheApplication {

之后在我们需要使用的类的方法之上添加对应的注解:

@Cacheable(value= , key =)

@CachePut(value=, key = )

这里的value指的是我们的实例的缓存 第二个key指的是我们对应的唯一标识

这两个之间的区别还是比较大的, 我们来粗浅的做一下比对, 分析

4>@Cacheable与@CachePut:

@Cacheable:

仅仅第一次获取数据是依靠我们设置的方法进行获取的, 之后再次使用的时候, 都是根据我们的实力缓存当中获取的

复制代码
@Cacheable(value = "smsCode",key = "#tel")
public String sendCodeToSMS(String tel) {
    System.out.println("==================CachePut方法被执行了!!!!=================");
    String generator = code.generator(tel);
    return generator;
}

使用这种方式, 我们针对同一个手机号, 发送多次请求, 依旧是仅仅只有一个结果

那么就说明我们的方法仅仅只用了一次

之后使用的都是缓存当中的数据了

@CachePut:

每一次都会调用对应的方法, 不是从我们的缓存值当中去拿的, 而是每一次都会将我们的返回值放进缓存内部!

复制代码
@CachePut(value = "smsCode",key = "#tel")
public String sendCodeToSMS(String tel) {
    System.out.println("==================CachePut方法被执行了!!!!=================");
    String generator = code.generator(tel);
    return generator;
}

比如我们使用手机号获取验证码的一个小功能, 这里发送几次请求, 就有几个返回过来的验证码, 即使是针对同一个的手机号, 在很短的时间内

相关推荐
坐吃山猪2 小时前
SpringBoot01-配置文件
java·开发语言
我叫汪枫2 小时前
《Java餐厅的待客之道:BIO, NIO, AIO三种服务模式的进化》
java·开发语言·nio
yaoxtao3 小时前
java.nio.file.InvalidPathException异常
java·linux·ubuntu
Swift社区4 小时前
从 JDK 1.8 切换到 JDK 21 时遇到 NoProviderFoundException 该如何解决?
java·开发语言
DKPT5 小时前
JVM中如何调优新生代和老生代?
java·jvm·笔记·学习·spring
phltxy5 小时前
JVM——Java虚拟机学习
java·jvm·学习
Armyyyyy丶6 小时前
Redis底层实现原理之五大基础结构
数据结构·redis·缓存
seabirdssss6 小时前
使用Spring Boot DevTools快速重启功能
java·spring boot·后端
喂完待续7 小时前
【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架
java·spring·spring cloud·云原生·架构·big data·序列晋升