CacheManager
缓存配置
web.xml配置spring-context.xml启动加载
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-context.xml</param-value>
</context-param>
spring-context.xml中导入spring-ecache.xml
<import resource="spring-ecache.xml" />
spring-ecache.xml中配置cache-manager
<cache:annotation-driven cache-manager="redisCacheManager"/>
<bean id="redisCacheManager" class="CustomizedRedisCacheManager">
<constructor-arg ref="redisTemplate"/>
<property name="defaultExpiration" value="${redis.cache.time} "/>
</bean>
缓存要应用的bean
public class CustomizedRedisCacheManager extends RedisCacheManager {
private Long defaultExpiration;
public CustomizedRedisCacheManager(RedisOperations redisOperations) {
super(redisOperations);
}
@Override
public Cache getCache(String name) {
if (defaultExpiration == null) {
defaultExpiration = 3600L;
}
super.setDefaultExpiration(defaultExpiration);
Cache cache = super.getCache(name);
return cache;
}
public Cache getCache(String name, Long expireDate) {
super.setDefaultExpiration(expireDate);
Cache cache = super.getCache(name);
return cache;
}
public Long getDefaultExpiration() {
return defaultExpiration;
}
public void setDefaultExpiration(Long defaultExpiration) {
this.defaultExpiration = defaultExpiration;
}
}
注解方式,缓存到ConcurrentHashMap,也就是保存到内存
@EnableCaching
public class ProjectConfig extends CachingConfigurerSupport {
@Bean
@Override
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(new ConcurrentMapCache("fieldSets")));
return cacheManager;
}
}
@Cacheable(value = "fieldSets")
public List<Position> getViewFieldSets(String typeId) {
Type type = MetaLoader.getLoader().loadType(typeId);
return ((DetailView) type.getView(apiViewName).getView().getDefinition()).getFieldsets().get(0).getItems();
}