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>