spring使用cache

考虑两方面:

i) 声明某些方法使用缓存(注解方式)

ii) 配置Spring对Cache的支持。

一、基于注解的支持

一般我们常用的注解:@Cacheable和@CacheEvict。

1.1、@Cacheable

@Cacheable既可以标记在一个方法上,也可以标记在一个类上。当标记在一个方法上时表示该方法是支持缓存的,当标记一个类上时则表示该类所有的方法都是支持缓存的。

它有三个属性:value、key和condition

1、value属性(必须的)

指定Cache名称,其表示当前方法的返回值是会被缓存在哪个Cache上的,对应Cache的名称。可以是一个也可以是多个,当指定多个时其是一个数组。

2、key属性(可选,有默认)

是用来指定Spring缓存方法的返回结果时对应的key。当我们没有指定该属性时,Spring将使用默认策略生成key。

自定义策略是指可以通过Spring的EL表达式来指定key。这里的EL表达式可以使用方法参数及它们对应的属性。使用方法参数时直接使用“#参数名”或者“#p参数index”

3、condition(可选,默认为空,表示将缓存所有的调用情形)

指明该方法的返回结果是否被缓存。

总结:

当执行到一个被@Cacheable注解的方法时,Spring首先检查condition条件是否满足。

如果不满足,执行方法,返回;

如果满足,在value所命令的缓存空间中查找使用key存储的对象,如果找到,将找到的结果返回,如果没有找到执行方法,将方法的返回值以key-对象的方式存入value缓存中,然后方法返回。

二、配置Spring对Cache的支持

1、xml文件中增加命名空间

<beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:tx="http://www.springframework.org/schema/tx"       xmlns:aop="http://www.springframework.org/schema/aop"       xmlns:cache="http://www.springframework.org/schema/cache"       xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
   <!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,有一个cache-manager属性用来指定当前所使用的CacheManager对应的bean的名称,默认是cacheManager -->  <cache:annotation-driven/>
</beans>
 

<cache:annotation-driven/>有一个cache-manager属性用来指定当前所使用的CacheManager对应的bean的名称,默认是cacheManager

2、配置CacheManager

CacheManager是Spring定义的一个用来管理Cache的接口。Spring自身已经为我们提供了两种CacheManager的实现。一种是基于Java API的ConcurrentMap,另一种是基于第三方Cache实现--EhCache.。

基于ConcurrentMap的配置

<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">    <property name="caches">        <set>            <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean">                <!--xxxx对应@Cacheable中的value值-->                <property name="name" value="xxxx"/>            </bean>        </set>    </property></bean>
 

完成以上步骤后,可进行测试下。

第一次调用时,走其中的方法,第二次不走其中方法,直接从缓存中抽取.

时间: 2024-10-23 17:14:32

spring使用cache的相关文章

Spring使用Cache、整合Ehcache

从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回.所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果. 使用Spring Cache需要我们做两方面的事: n  声明

spring redis cache使用思考

项目中使用spring redis cache做为cache客户端. spring redis cache中RedisCache是整个spring cache的领域模型,对应一个cache块的操作类. RedisCache中定义了put,get,clean,evict操作. 其中clean方法用于清除当前cache块中所有的元素,这里会加锁,而锁的实现是往redis服务器上存放一个key为:cache块名称加上~lock的元素.最后清除锁则是在clean方法执行完成后在finally中清除. p

Spring 使用Cache(转)

从3.1开始Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事物管理的支持.Spring Cache是作用在方法上的,其核心思想是:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值存放在缓存中,等到下次利用同样的参数调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回.所以在使用Spring Cache的时候我们要保证我们的缓存的方法对于相同的方法参数要有相同的返回结果. 使用Spring Cache需要我们做两方面的事: l  声明某些方法使

spring使用@Cache的简单实现

基于xml的配置感觉没有注解形式简单明了,咱不考虑了. 进入正题之前先提个疑问,希望知道的人能告诉一下 下述介绍会有这段代码: @Cacheable(value="myCache", key="'get'+#userNo") public String get(String userNo){ 此处#userNo会动态的传入? 1,spring配置文件 <bean id="cacheManager" class="org.sprin

史上最全的Spring Boot Cache使用与整合

一:Spring缓存抽象# Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术:并支持使用JCache(JSR-107)注解简化我们开发: Cache接口为缓存的组件规范定义,包含缓存的各种操作集合: Cache接口下Spring提供了各种xxxCache的实现:如RedisCache,EhCacheCache ,ConcurrentMapCache等:

Spring Data Cache

方法是一个对象,使用对象中的属性,如ID,作为cache key 参考 SpringBoot使用Redis缓存

SpringBoot非官方教程 | 第十三篇:springboot集成spring cache

转载请标明出处: http://blog.csdn.net/forezp/article/details/71023614 本文出自方志朋的博客 本文介绍如何在springboot中使用默认的spring cache, 声明式缓存 Spring 定义 CacheManager 和 Cache 接口用来统一不同的缓存技术.例如 JCache. EhCache. Hazelcast. Guava. Redis 等.在使用 Spring 集成 Cache 的时候,我们需要注册实现的 CacheMana

spring cache 详解

Spring使用Cache 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回.所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果. 使用Spring Cache需要我

J2EE开发框架搭建(9) - memcached与spring提供的cache接口整合

spring 从3.x就提供了cache接口,spring默认实现的缓存是ehcache,spring的cache接口: public interface Cache { String getName(); Object getNativeCache(); ValueWrapper get(Object key); <T> T get(Object key, Class<T> type); void put(Object key, Object value); void evict