spring-simple-cache的那些事

spring-simple-cache的那些事java

<?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: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-3.1.xsd
						http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd">

	<cache:annotation-driven cache-manager="cacheManager"/>
	<!-- spring本身的換管理器,這裏定義了兩個緩存位置名稱 ,既註解中的value -->
	<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">  
		<property name="caches">  
			<set>
				<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="default" />
			</set>
		</property> 
	</bean>
</beans>

@Cacheable、@CachePut、@CacheEvict 註釋介紹

經過上面的例子,咱們能夠看到 spring cache 主要使用兩個註釋標籤,即 @Cacheable、@CachePut 和 @CacheEvict,咱們總結一下其做用和配置方法。spring

表 1. @Cacheable 做用和配置方法

@Cacheable 的做用 主要針對方法配置,可以根據方法的請求參數對其結果進行緩存緩存

@Cacheable(value=」mycache」) 或者 
@Cacheable(value={」cache1」,」cache2」}key緩存的 key,能夠爲空,若是指定要按照 SpEL 表達式編寫,若是不指定,則缺省按照方法的全部參數進行組合例如:
@Cacheable(value=」testcache」,key=」#userName」)condition緩存的條件,能夠爲空,使用 SpEL 編寫,返回 true 或者 false,只有爲 true 才進行緩存例如:
@Cacheable(value=」testcache」,condition=」#userName.length()>2」)spa

表 2. @CachePut 做用和配置方法

@CachePut 的做用 主要針對方法配置,可以根據方法的請求參數對其結果進行緩存,和 @Cacheable 不一樣的是,它每次都會觸發真實方法的調用code

@Cacheable(value=」mycache」) 或者 
@Cacheable(value={」cache1」,」cache2」}key緩存的 key,能夠爲空,若是指定要按照 SpEL 表達式編寫,若是不指定,則缺省按照方法的全部參數進行組合例如:
@Cacheable(value=」testcache」,key=」#userName」)condition緩存的條件,能夠爲空,使用 SpEL 編寫,返回 true 或者 false,只有爲 true 才進行緩存例如:
orm

@Cacheable(value=」testcache」,condition=」#userName.length()>2」)xml

表 3. @CacheEvict 做用和配置方法

@CachEvict 的做用 主要針對方法配置,可以根據必定的條件對緩存進行清空it

@CachEvict(value=」mycache」) 或者 
@CachEvict(value={」cache1」,」cache2」}
io

@CachEvict(value=」testcache」,key=」testcache」)class

@CachEvict(value=」testcache」,
condition=」#userName.length()>2」)

@CachEvict(value=」testcache」,allEntrie)

@CachEvict(value=」testcache」,beforeInvocation=true)

相關文章
相關標籤/搜索