Spring Cache集成spring默认缓存实现

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>

你可能感兴趣的:(spring,缓存)