一、Ehcache介绍
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP API等特点。
主要的特性有:
-
快速
-
简单
-
多种缓存策略
-
缓存数据有两级:内存和磁盘,因此无需担心容量问题
-
缓存数据会在虚拟机重启的过程中写入磁盘
-
可以通过RMI、可插入API等方式进行分布式缓存
-
具有缓存和缓存管理器的侦听接口
-
支持多缓存管理器实例,以及一个实例的多个缓存区域
-
提供Hibernate的缓存实现
二、Spring缓存抽象
Spring从3.1开始定义了org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 接口来统一不同的缓存技术;
-
Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;
-
Cache接口下spring提供了各种xxxCache的实现,比如EhCacheCache、RedisCache等等
-
每次调用需要缓存功能的方法时,Spring会检查指定参数的指定目标方法是否已经被调用过;如果有缓存就直接从缓存中获取结果,没有就调用方法并缓存结果后返回给用户。下次调用则直接从缓存中获取。
1、缓存注解概念
Cache | 缓存接口,定义缓存操作。实现有:EhCacheCache、RedisCache等等 |
---|---|
CacheManager | 缓存管理器,管理各种缓存组件 |
@Cacheable | 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 |
@CacheEvict | 清空缓存 |
@CachePut | 保证方法被调用,又希望结果被缓存 |
@EnableCaching | 开启基于注解的缓存 |
三、SpringBoot 添加 EhCache缓存
1、pom.xml 添加依赖
<!--ehcache 缓存--> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.10.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>
2、resources目录下创建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="E:\data"/> <!-- 默认缓存 --> <defaultCache maxEntriesLocalHeap="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" maxEntriesLocalDisk="10000000" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"> <persistence strategy="localTempSwap"/> </defaultCache> <!-- cache 可以设置多个,例如localCache、UserCache和HelloWorldCache --> <cache name="localCache" eternal="true" maxElementsInMemory="100&