`

Spring 3.1 M1 中的缓存功能

 
阅读更多

本文转自:http://www.oschina.net/question/12_16549

上个月 Spring 发布了 3.1 的第一个里程碑版本,详情请看这里

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

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

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

 

  1. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  2.   xmlns:cache="http://www.springframework.org/schema/cache" 
  3.    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  4.         http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd"> 
  5.    
  6.   <cache:annotation-driven /> 
  7.   ...  
  8. </beans> 

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

 

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

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

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

 

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

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

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

 

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

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

还可以指定缓存的Key:

 

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

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

 

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

缓存管理器的配置:

 

  1. <!-- generic cache manager --> 
  2. <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"> 
  3.   <property name="caches"> 
  4.     <set> 
  5.       <bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="default"/> 
  6.       <bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="persons"/> 
  7.     </set> 
  8.   </property> 
  9. </bean> 

基于 Ehcache 缓存的配置:

 

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

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

分享到:
评论

相关推荐

    spring3.1包名解析

    6. `org.springframework.context-3.1.0.M1.jar`: 扩展了IoC服务,提供邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及对多种视图层框架的封装,如JSP、FreeMarker等。 7. `org.springframework.core-...

    struts2.2.3-hibernate3.3.1-spring3.1.zip jar 包

    Struts2.2.3、Hibernate3.3.1 和 Spring3.1 是三个非常重要的Java Web开发框架,它们在企业级应用开发中扮演着核心角色。这个`struts2.2.3-hibernate3.3.1-spring3.1.zip`压缩包集合了这三个框架的组件,方便开发者...

    SSH/SSJ整合,Spring 3.1.0M1,Hibernate 3.X,struts2.1.8

    此外,Spring 3.1还引入了环境抽象,允许根据不同的部署环境调整配置。 Hibernate作为一个流行的关系型数据库持久化框架,3.X版本在性能和易用性上都有所提升。它提供了ORM(对象关系映射)服务,将数据库操作转化...

    ssh框架整合包

    `spring-context-3.2.0.M1.jar`和`spring-beans-3.2.0.M1.jar`分别包含了Spring的应用上下文模块和Bean模块,它们负责管理对象的生命周期和装配。Spring还提供了对数据访问、事务管理、邮件服务等的支持。 Struts2...

    DeepSeek入门宝典:赋能开发者实战的高性能AI解决方案

    内容概要:本文档详细介绍了 DeepSeek 这一高效、经济的人工智能解决方案,旨在为企业端、产品端以及开发者提供深度技术支持。对于企业而言,DeepSeek 带来了显著的成本效益和生产效率提升;而对于具体的产品和服务,它增强了用户体验的质量。特别是针对开发者,文档深入浅出地讲解了如何利用 DeepSeek 实现自动化代码生成、改写等辅助开发功能,并且提供了具体的步骤指导以满足不同环境下的部署需求,包括直接通过官方API接入、本地私有化部署或借助云平台进行托管的方式。 适合人群:希望降低开发门槛,提高工作效率的软件工程师和技术团队。 使用场景及目标:开发者可以根据自身条件选择最适合自己的部署方案来整合 DeepSeek 技术,进而达到优化编码过程、减少人为错误的目的。 其他说明:文中还包括了许多实际操作的例子,如通过代码改写的实例来展示如何改进现有程序段落,还有详细的API使用指南帮助初学者快速上手DeepSeek。此外,还提供了大量外部参考资料链接以便进一步扩展知识和技能范围。

    lusted_3cd_01_0318.pdf

    lusted_3cd_01_0318

    开源AI工具下载——Cherry-Studio-1.0.1-MACOS arm64版

    Cherry Studio是一款支持多模型服务的 Windows/macOS GPT 客户端。通过与Ollama搭配,搭建个人本地AI大模型

    chromedriver-win64-136.0.7058.0.zip

    chromedriver-win64-136.0.7058.0.zip

    matlab程序代码项目案例:使用 Simulink 进行自适应 MPC 设计

    matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    mellitz_3cd_01_1116.pdf

    mellitz_3cd_01_1116

    基于MATLAB的牛顿迭代法实现

    基于MATLAB的牛顿迭代法实现

    steenman_01_0908.pdf

    steenman_01_0908

    [AB PLC例程源码][MMS_047737]System Time 64Bit Interpreted AOI.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    stone_3ck_01a_0518.pdf

    stone_3ck_01a_0518

    [AB PLC例程源码][MMS_041473]Input Time Stamping.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    lusted_3cd_01_1117.pdf

    lusted_3cd_01_1117

    2010-2023年 上市公司-管理层情感语调数据.zip

    管理层情感语调,或称为管理层语调,是一个在财务与会计领域中常用的概念,特别是在分析上市公司信息披露质量时。它主要指的是管理层在上市公司文字信息披露过程中,用词所体现出的情感倾向和可理解性。 本数据复刻了《财经研究》《中南财经政法大学学报》等顶级期刊的核心解释变量的做法。情感语调对企业未来盈余和未来绩效具有较强解释力、降低会计信息误定价、为分析师预测提供增量信息,而投资者也会对管理层情感语调做出积极反应。 情感语调1=(正面词汇数量-负面词汇数量)/词汇总量;数值越大,情感倾向越偏向正面积极。 情感语调2=(正面词汇数量-负面词汇数量)/(正面词汇数量+负面词汇数量);数值越大,情感倾向越偏向正面积极。 指标 证券代码、企业代码、年份、证券简称、行业代码、行业名称、正面词汇数量、负面词汇数量、词汇总量、句子数量、文字数量、情感语调1、情感语调2。

    mellitz_3cd_02_0318.pdf

    mellitz_3cd_02_0318

    moore_01_0909.pdf

    moore_01_0909

    lusted_3ck_02a_0119.pdf

    lusted_3ck_02a_0119

Global site tag (gtag.js) - Google Analytics