修改缓存供应商--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;
}

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

相关推荐
憨子周41 分钟前
2M的带宽怎么怎么设置tcp滑动窗口以及连接池
java·网络·网络协议·tcp/ip
霖雨2 小时前
使用Visual Studio Code 快速新建Net项目
java·ide·windows·vscode·编辑器
SRY122404192 小时前
javaSE面试题
java·开发语言·面试
Fiercezm3 小时前
JUC学习
java
无尽的大道3 小时前
Java 泛型详解:参数化类型的强大之处
java·开发语言
ZIM学编程3 小时前
Java基础Day-Sixteen
java·开发语言·windows
我不是星海3 小时前
1.集合体系补充(1)
java·数据结构
P.H. Infinity3 小时前
【RabbitMQ】07-业务幂等处理
java·rabbitmq·java-rabbitmq
爱吃土豆的程序员3 小时前
java XMLStreamConstants.CDATA 无法识别 <![CDATA[]]>
xml·java·cdata
2401_857610034 小时前
多维视角下的知识管理:Spring Boot应用
java·spring boot·后端