1.导入pom坐标,spring boot内置了encache的版本`
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
2.配置ehcache.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='http://www.ehcache.org/v3'
xsi:schemaLocation="http://www.ehcache.org/v3
http://www.ehcache.org/schema/ehcache-core.xsd">
<!-- 公共部分 -->
<cache-template name="common">
<key-type>java.lang.Object</key-type>
<value-type>java.lang.Object</value-type>
<resources>
<heap>10000</heap>
</resources>
</cache-template>
<!-- 存放token的缓存:只要7天内不访问,就失效 -->
<cache alias="token" uses-template="common">
<expiry>
<tti unit="days">7</tti>
</expiry>
</cache>
<!-- 默认缓存:永不过期 -->
<cache alias="default" uses-template="common">
<expiry>
<none/>
</expiry>
</cache>
</config>
3.创建encache工具类
public class Caches {
private static final CacheManager MGR;
private static final Cache<Object, Object> DEFAULT_CACHE;
private static final Cache<Object, Object> TOKEN_CACHE;
static {
// 初始化缓存管理器
URL url = Caches.class.getClassLoader().getResource("ehcache.xml");
assert url != null;
Configuration cfg = new XmlConfiguration(url);
MGR = CacheManagerBuilder.newCacheManager(cfg);
MGR.init();
// 缓存对象
DEFAULT_CACHE = MGR.getCache("default", Object.class, Object.class);
TOKEN_CACHE = MGR.getCache("token", Object.class, Object.class);
}
//封装
public static void putToken(Object key, Object value) {
if (key == null || value == null) return;
TOKEN_CACHE.put(key, value);
}
public static void removeToken(Object key) {
if (key == null) return;
TOKEN_CACHE.remove(key);
}
}
4.在impl中调用putToken
String token= UUID.randomUUID().toString();
Caches.putToken(token,vo);
vo.setToken(token);
return vo;
此时返回vo到客户端
运行 然后尝试将token存入到vo对象中结果报错,看上去是缺少相应类,于是将相应的pom坐标导入
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBElement
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
5.重新部署运行,在localStorage成功找到
每一次请求均有token,方便给后续做权限控制