Spring 3.1中开始对缓存提供支持,核心思路是对方法的缓存,当我们调用一个方法时,将方法的参数和返回值作为 key/value缓存起来,当再次调用该方法时,如果缓存中有数据,就直接从缓存中获取,否则再去执行该方法。
Spring并未提供缓存的实现,我们可以自由选择缓存的实现,目前Spring Boot支持的缓存有 JCache、EhCache 2.x、Redis....。不过无论使用那种缓存实现,不同的只是缓存配置,开发者使用的缓存注解都是一样的。
一、使用 Ehchche 2.x 缓存
1,添加依赖
首先编辑项目的pom.xml文件,添加 spring-boot-starter-cache 依赖以及 Ehcache依赖:
org.springframework.boot
spring-boot-starter-cache
net.sf.ehcache
ehcache
2,添加缓存配置文件
在 resources目录下创建ehcache.xml 文件作为 Ehcache缓存的配置文件,内容如下:
(1)如果 Ehcache的依赖存在,并且在 classpath下又一个名为encache.xml 的 Ehcache配置文件,那么 EhCacheManager将会自动作为缓存的实现。
(2)这是一个常规的 Ehcache配置文件,提供了两个缓存策略,一个是默认的,另一个名为 book_cache。具体参数作用如下:
name:缓存名称
maxElementsInMemory:缓存最大个数
eternal:缓存对象是否永久有效,一但设置了永久有效,timeout将不起作用。
timeToIdleSeconds:缓存对象在失效前的允许闲置时间(单位:秒)。仅当 eternal=false对象不是永久有效时,该属性才生效。默认值是0,也就是可闲置时间无穷大。
timeToLiveSeconds:缓存对象在失效前允许存活时间(单位:秒)。仅当 eternal=false 对象不是永久有效时,该属性才生效。默认值是 0,也就是存活时间无穷大。
overflowToDisk:表示内存中的数量达到 maxElementsInMemory时,Ehcache是否将对象写到磁盘中。
diskPersistent:是否缓存虚拟机重启期数据。
diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是 120秒。
(3)如果我们想要自定 Ehcache配置文件的名称和位置,可以在application.properties中添加如下配置:
spring.cache.ehcache.c