Spring cache简单使用.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Spring cache简单使用

Spring cache简单使用 前言 spring有一套和各种缓存的集成方式。类似于sl4j,你可以选择log框架实现,也一样可以实现缓存实现,比如ehcache,guava cache. 什么时候用缓存 首先,缓存是为了省略消耗时间的步骤,比如io。当我需要从数据库查询的数据几乎没有变化,或者变化很少的时候,我就没必要每次都去数据库里拿数据了。大可以放到本地,直接取出来就可以了。这时候需要注意的是数据一致性问题,缓存的数据是否被更改了,数据是否有效。 我的项目是分布式部署的,但还没有搭建分布式缓存服务。我采用的本地缓存,也就是说,我的缓存只能在本实例中,跨机器访问则不命中。即便如此也大大减少了访问数据库的开销了。 配置缓存 这里采用guava cache作为本地缓存。将guava cache注册到cacheManger里就可以调用了。 1.配置cacheManger 首先针对要缓存的类型,配置缓存策略。这里设置最大缓存数量和缓存过期时间 public static final String HOTEL_POSTION = hotel_position; //cache key @Value(${cache.guavaCache.hotelPosition.maxSize}) private long hotelPositionMaxSize; @Value(${cache.guavaCache.hotelPosition.duration}) private long hotelPositionDuration; private GuavaCache buildHotelPositionCache() { return new GuavaCache(HOTEL_POSTION, CacheBuilder.newBuilder() .recordStats() .maximumSize(hotelPositionMaxSize) .expireAfterWrite(hotelPositionDuration, TimeUnit.DAYS) .build()); } 将刚才创建的缓存策略添加到cacheManger: @Bean public CacheManager cacheManager() { SimpleCacheManager manager = new SimpleCacheManager(); List list = new ArrayList(); list.add(buildHotelPositionCache()); manager.setCaches( list ); return manager; } 2.配置要缓存的方法 在需要使用这个缓存的地方,增加一行注解 @Cacheable(value = CacheManagementConfig.HOTEL_POSTION, key = {#hotelId}, condition = , unless = !#result.isSuccessful()) public BaseDomainResponseHotelPosition getHotelPosition(int hotelId, String apiToken) { //...... } @Cacheable表示这个方法要被缓存 value string,表示这个方法缓存的唯一性标识,即这方法缓存的key。语法为SpEL. key String,表示每条请求缓存的key,即如果key相同,则返回缓存中对应的数据 condition boolean,可以额外添加缓存的条件.语法为SpEL. unless boolean, 配置哪些条件下的记录不缓存。语法为SpEL. result表示return的这个对象,可以同result来调用这个对象的属性,比如isSuccessful()就是我返回对象的一个方法。 官方文档 此处学习官方文档cache部分,spring版本4.1+。 At its core, the abstraction applies caching to Java methods, reducing thus the number of executions based on the information a

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档