@Cacheable配置,redis缓存应用

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) {
        // 缓存数据默认存放3600s,即1个小时
        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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值