spring提供了如下接口:
org.springframework.cache.Cache 缓存数据操作接口
org.springframework.cache.CacheManager Cache的管理接口
上一节我们已经使用过了CacheManager的一个实现类org.springframework.cache.support.SimpleCacheManager,常见的有如下实现类:
org.springframework.cache.concurrent.ConcurrentMapCacheManager
org.springframework.cache.Cache.GuavaCacheManager
rg.springframework.cache.support.SimpleCacheManager
org.springframework.cache.ehcache.EhCacheCacheManager
org.springframework.cache.jcache.JCacheCacheManager
针对于redis有org.springframework.data.redis.cache.RedisCacheManager实现。
spring默认采用ConcurrentHashMap实现缓存数据存储,org.springframework.cache.concurrent.ConcurrentMapCache实现Cache接口,org.springframework.cache.concurrent.ConcurrentMapCacheManager实现CacheManager接口。
spring配置如下:
<?xml version='1.0' encoding='UTF-8'?> <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:c='http://www.springframework.org/schema/c' xmlns:p='http://www.springframework.org/schema/p' 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/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd '> <!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 --> <cache:annotation-driven cache-manager="cacheManager" /> <bean id="userService" class="org.springframework.cache.demo.UserService" /> <!-- generic cache manager --> <bean id="cacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager"> <constructor-arg index="0" value="userCache" /> </bean> </beans>
还可以使用SimpleCacheManager来配置器CacheManager,使用ConcurrentMapCache的工厂类org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean,如下:
<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" xmlns:p="http://www.springframework.org/schema/p" 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"> <!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 --> <cache:annotation-driven cache-manager="cacheManager" /> <bean id="userService" class="org.springframework.cache.demo.UserService" /> <!-- generic cache manager --> <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"> <property name="caches"> <set> <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="default" /> <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="userCache" /> </set> </property> </bean> </beans>
添加jar依赖:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.1.7.RELEASE</version> </dependency>