1.pom文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<!-- ehcache缓存 -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.9.1</version><!--$NO-MVN-MAN-VER$ -->
</dependency>
</dependencies>
2./src/main/resouces/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="d://ehcache"/>
<!-- 默认缓存 -->
<defaultCache
maxEntriesLocalHeap="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
maxEntriesLocalDisk="10000000"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<persistence strategy="localTempSwap"/>
</defaultCache>
<!-- helloworld缓存 -->
<cache name="testcache"
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="5"
timeToLiveSeconds="5"
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU"/>
</ehcache>
3.application.properties
spring.cache.ehcache.config=classpath:ehcache.xml
4.CacheService
package com.knife.EhcacheBoot;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Repository;
@Repository
@CacheConfig(cacheNames = {"testcache"})
public class CacheService {
@Cacheable
public String save(String typeId) {
System.out.println("save()执行了=============");
return "模拟数据库保存";
}
@CachePut
public String update(String typeId) {
System.out.println("update()执行了=============");
return "模拟数据库更新";
}
@CacheEvict
public String delete(String typeId) {
System.out.println("delete()执行了=============");
return "模拟数据库删除";
}
@Cacheable
public String select(String typeId) {
System.out.println("select()执行了=============");
return "模拟数据库查询";
}
}
5.Controller
package com.knife.EhcacheBoot;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class CachController {
@Autowired
private CacheService service;
@RequestMapping(value = { "tsave" })
@ResponseBody
public String tsave(String key) {
return service.save(key);
}
@RequestMapping(value = { "tselect" })
@ResponseBody
public String tselect(String key) {
return service.select(key);
}
@RequestMapping(value = { "tupdate" })
@ResponseBody
public String tupdate(String key) {
return service.update(key);
}
@RequestMapping(value = { "tdelete" })
@ResponseBody
public String tdelete(String key) {
return service.delete(key);
}
}