`
xgs_1983
  • 浏览: 39568 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

Spring 应用增加缓存

 
阅读更多

 

该版本最酷的新特性就是引入全方位的缓存支持。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.xsd
        http://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"/>

如果你看不懂上面的内容,

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    spring小结之配置二级缓存!

    5. 测试与优化:通过测试,观察缓存效果,调整缓存策略,如增加缓存大小、延长有效期等,以达到最佳性能。 总结来说,Spring的二级缓存配置涉及多个层面,包括引入缓存库、设置缓存策略、配置Spring以及在业务代码...

    Spring集成的Hibernate配置二级缓存

    在企业级Java应用开发中,Spring和...总之,合理利用Hibernate的二级缓存机制,结合Spring的管理能力,可以有效地提升Java应用的性能。通过优化缓存配置和策略,可以在不牺牲数据一致性的情况下,达到良好的用户体验。

    spring + ehcache + redis两级缓存

    在IT行业中,缓存是一种非常重要的技术,它可以显著提高应用程序的...这不仅提升了应用性能,也增加了系统的可伸缩性。在实际项目中,根据具体需求和资源,可以灵活调整两者的使用比例,以达到最佳的性能和成本效益。

    spring boot+spring cache实现两级缓存(redis+caffeine)

    Spring Cache是Spring Framework提供的一个缓存组件,定义了一些标准接口,通过实现这些接口,就可以通过在方法上增加注解来实现缓存。Spring Cache的核心接口有两个:Cache和CacheManager。Cache接口提供缓存的具体...

    Springboot中使用缓存的示例代码

    Springboot 框架提供了强大的缓存支持,可以通过注解配置方式低侵入的给原有 Spring 应用增加缓存功能,提高数据访问性能。缓存是指将频繁查询的数据存储在内存中,以便下次查询时可以直接从缓存中读取,减少对...

    spring-ehcache-redis两级缓存

    (见下图,为了减少get这几条网络传输,我们会在每个应用服务器上增加本地的ehcache缓存作为二级缓存,即第一次get到的数据存入ehcache,后面output输出即可从本地ehcache中获取,不用再访问redis了,所以就减少了...

    Spring+Struts2+hibernate+Redis整合

    在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...

    Spring+Redis整合例子

    在Spring应用中整合Redis,首先需要在配置文件(如application.properties或yaml)中添加Redis服务器的相关连接信息,包括主机名、端口号、密码等。例如: ``` spring.redis.host=localhost spring.redis.port=...

    01.Spring框架简介_spring_spring发展历程_

    6. **Test**:提供了对Spring应用的测试支持,包括单元测试和集成测试。 Spring还与其他框架和库紧密集成,如MyBatis、Quartz、Apache CXF等,形成强大的生态系统。 总的来说,Spring框架凭借其灵活性、模块化和...

    springCache

    Spring Cache 是 Spring 框架的一个重要组成部分,它提供了一种在应用程序中统一管理缓存的能力,无需依赖特定的缓存实现,如 Ehcache、Redis 或 Hibernate 二级缓存等。通过 Spring Cache,开发者可以方便地在方法...

    详解Spring整合Ehcache管理缓存

    通过这种方式,Spring 将 Ehcache 整合进应用程序,使得开发者可以方便地管理和使用缓存,无需关注缓存的具体实现细节。 总结,Spring 与 Ehcache 的整合使得我们可以充分利用 Ehcache 的性能优势,同时享受 Spring...

    spring2.0和spring2.5 及以上版本的jar包区别 spring jar 包详解

    13. **spring-mock.jar**:这是一个专门用于单元测试的jar包,提供了模拟HTTP请求的能力,帮助开发者更容易地测试Spring应用程序中的控制器和其他Web组件。 #### 总结 从Spring2.0到Spring2.5及以后的版本,Spring...

    Spring+Mybatis+Springboot面试试题及答案.zip

    4. **Spring Boot**: Spring Boot简化了Spring应用程序的初始化和配置,提供了一种快速启动和运行应用的方式。 **Mybatis框架** Mybatis是一个轻量级的持久层框架,它消除了几乎所有的JDBC代码和手动设置参数,让...

    精彩:Spring Security 演讲PPT

    在Spring Security出现之前,传统的Web应用安全开发通常采用自定义的方式来实现,这不仅增加了开发成本,而且难以维护。例如,在Struts 1.x时代,开发者通常通过继承`AbstractBaseAction`来实现安全控制逻辑,或者...

    spring 常用的26个包

    26. `org.springframework.boot`:Spring Boot,简化了Spring应用的初始设置和配置,提供了自动配置和"起步依赖"。 这26个包构成了Spring框架的核心,它们相互协作,为开发者提供了强大的功能和灵活性,使得在Java...

    springboot集成redis缓存之手机验证码.docx

    在本文中,我们将探讨如何在Spring Boot应用中集成Redis缓存来存储和验证手机验证码。首先,我们讨论了三种常见的验证码存储方式: 1. **Session存储**:将验证码放入用户的Session中,并设置一个适当的过期时间。...

    spring framework schema

    4. **Cache Schema**: `cache` schema为Spring应用提供缓存支持,例如支持 EhCache、Guava Cache 或 Hazelcast 等缓存解决方案。通过配置,可以定义哪些方法的结果应被缓存,以及缓存策略,如过期时间、大小限制等。...

    spring3.0.5的所以jar包

    提供了对流行ORM(对象关系映射)框架的集成,如Hibernate和JPA,使得在Spring应用中使用ORM变得更加简单。 8. **org.springframework.aop-3.0.5.RELEASE.jar**: 实现了面向切面编程(AOP),允许定义横切关注点...

    spring-3.1.2包含jar包文件

    - **Caching**:Spring 3.1.2 增加了缓存抽象,支持多种缓存实现,如 EhCache、Guava 等,便于在应用中实现高效的缓存策略。 总的来说,"spring-3.1.2 包含 jar 包文件" 提供了构建基于 Spring 的 Java 应用程序所...

Global site tag (gtag.js) - Google Analytics