介绍 Spring 3.1 M1 中的缓存功能- 中文版 (转)

Spring 3.1 提供了对已有的 Spring 应用增加缓存的支持,这个特性对应用本身来说是透明的,通过缓存抽象层,使得对已有代码的影响降低到最小。

该缓存机制针对于 Java 的方法,通过给定的一些参数来检查方法是否已经执行,Spring 将对执行结果进行缓存,而无需再次执行方法。

可通过下列配置来启用缓存的支持(注意使用新的schema):

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:cache="http://www.springframework.org/schema/cache"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd"><cache:annotation-driven />...
</beans>

接下来可使用 @Cacheable 和 @CacheEvict 来对缓存进行操作。

@Cacheable("persons")
public Person profile(Long personId) { ... }

以上代码声明了一个名为 persons 的缓存区域,当调用该方法时,Spring 会检查缓存中是否存在 personId 对应的值。

也可以指定多个缓存区域,当你在应用有需要这样做的话:

@Cacheable({"persons", "profiles"})
public Person profile(Long personId) { ... }

当指定多个区域时,Spring 会一个个的检查,一旦某个区域存在指定值时则返回。

而 @CacheEvict 则用来从缓存中清除数据,例如:

@CacheEvict (value = "persons", allEntries=true)
public List<Person> listPersons()

@CacheEvict 可以指定清除缓存的条件。

还可以指定缓存的Key:

@Cacheable(value="persons", key="personId")
public Person profile(Long personId, Long groundId) { ... }

或者根据条件决定是否缓存:

@Cacheable(value="persons", condition="personId > 50")
public Person profile(Long personId) { ... }

缓存管理器的配置:

<!-- generic cache manager -->
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"><property name="caches"><set><bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="default"/><bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="persons"/></set></property>
</bean>

基于 Ehcache 缓存的配置:

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhcacheCacheManager" p:cache-manager="ehcache"/><!-- Ehcache library setup -->
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:config-location="ehcache.xml"/>

如果你看不懂上面的内容,那请看 洋文版 或者

官方文档:http://static.springsource.org/spring/docs/3.1.0.M1/spring-framework-reference/html/cache.html。

转载于:https://www.cnblogs.com/lhj588/archive/2012/01/13/2321769.html

介绍 Spring 3.1 M1 中的缓存功能相关推荐

  1. mysql jpa缓存,如何在Spring Data JPA CRUDRepository中添加缓存功能

    I want to add "Cacheable" annotation in findOne method, and evict the cache when delete or ...

  2. spring 5.x(1)-----Spring Framework 5.x中的新功能

    Spring Framework 5.x中有什么新功能 5.1版中的新功能 一般核心修订 基础设施: 在类路径和模块路径上对JDK 11的无警告支持. 支持Graal原生图像约束(反射,参数名称). ...

  3. Spring Framework 4.2 中的新功能和增强功能

    至今为止,Spring Framework 的最新版本为 4.2.1.RELEASE. 那么 Spring Framework 4.2 中的又有哪些新功能和增强功能呢? 核心容器改进 如 @bean ...

  4. iOS 设置中清除缓存功能

    绝大多数应用中都存在着清楚缓存的功能,形形色色,各有千秋,现为大家介绍一种最基础的清除缓存的方法.清除缓存基本上都是在设置界面的某一个Cell,于是我们可以把清除缓存封装在某一个自定义Cell中,如下 ...

  5. 谈谈MVC项目中的缓存功能设计的相关问题

    今天这一篇文章我来谈一谈在MVC 3项目中的缓存功能,以及针对缓存的一些设计上的考量,给大家参考参考 前言 为什么需要讨论缓存?缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源 ...

  6. 全面认识一下.NET 4.0的缓存功能

    很多关于.NET 4.0新特性的介绍,缓存功能的增强肯定是不会被忽略的一个重要亮点.在很多文档中都会介绍到在.NET 4.0中,缓存功能的增强主要是在扩展性方面做了改进,改变了原来只能利用内存进行缓存 ...

  7. ASP.NET MVC:缓存功能的设计及问题

    ASP.NET MVC:缓存功能的设计及问题 这是非常详尽的asp.net mvc中的outputcache 的使用文章. [原文:陈希章 http://www.cnblogs.com/chenxiz ...

  8. php excel 函数,php实现excel中rank函数功能的方法

    php实现excel中rank函数功能的方法 发布于 2015-10-28 18:54:25 | 77 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

  9. C#6中的新增功能 【Unity3D亲测】

    随着Unity2017的普及,使用.NET 4X的开发者也越来越多了,下面笔者给大家介绍一下在C# 6中的新功能主要是怕自己忘记,2333,有些功能还是很实用的~ 使用Unity版本2018.2.9f ...

最新文章

  1. 25个常用Matplotlib图的Python代码,收藏收藏!
  2. 20172313 2017-2018-2 《程序设计与数据结构》第十周学习总结
  3. android拨打电话
  4. 突发!百度CEO李彦宏被当中泼了一瓶水,肇事者网名:直男上树
  5. SpringCloud入门(一)
  6. 零侵入性:一个注解,优雅的实现循环重试功能
  7. Win10 如何配置JDK环境变量
  8. 科润酒吧点单系统服务器配置,那些牛逼的酒吧都用什么管理系统?
  9. 独家首发成语类智力多玩法微信小程序源码下载好玩而又强大
  10. 编译全志A31出现的错误
  11. 计算机毕业设计php的人事档案管理系统
  12. lamp技术_LAMP技术简介:
  13. php调用nexmo发送短信,使用Nexmo或Twilio仅使用电话号码进行登录和验证
  14. MacOS配置go环境
  15. 微信支付 商户号该产品权限未开通,请前往商户平台
  16. 在Keil4中新建51单片机工程模板详细步骤
  17. python ipad pro_离开 PC,在 iPad Pro 上也能编程了?
  18. 雷电模拟器python编程接口_【Python】雷电模拟器说明[附代码]
  19. 多元函数的泰勒级数展开公式
  20. 什么是虚拟机?Mac电脑怎么使用虚拟机安装双系统?

热门文章

  1. python剑指offer面试题_剑指Offer(Python语言)面试题38
  2. 数值分析 使用c语言 源码_分析源码,学会正确使用 Java 线程池
  3. 面向对象设计思想-C语言
  4. 自定义日历控android,Android自定义日历Calender代码实现
  5. mysql 排序 过滤_【MYSQL】-3 排序与过滤
  6. qq数据泄露_真良心,腾讯这个app竟然能查账号泄露
  7. 奇奇seo优化软件_西藏seo关键词优化软件
  8. tensorflow 小于_坐姿不对,屏幕就变模糊!教你用TensorFlow做一款“隐形背背佳”...
  9. pat 乙级 1047 编程团体赛(C++)
  10. 【渝粤教育】国家开放大学2018年秋季 1080t工程数学(本) 参考试题