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