spring 3.1中有cache了,下面結合目前網上的一些資料和手冊的歸納總結下:
1 @cache註解
在3.1中,都是用註解的了,
@cacheable註解可以用在方法或者類級別。當他應用於方法級別的時候,就是如上所說的快取返回值了。當應用在類級別的時候,這個類的所有方法的返回值都將被快取。
@cacheable(value = "employee")
public class employeedao
public person findanotheremployee(string firstname, string surname, int age)
}
在上面的**中,快取了person了,命名為employee,快取的是方法的值,
@cacheable註解有三個引數,value是必須的,還有key和condition。第乙個引數,也就是value指明了快取將被存到什麼地方。
在spring 3.1中,可以使用spel表示式去進行快取的指定,比如:
@cacheable(value = "employee", key = "#surname")
public person findemployeebysurname(string firstname, string surname, int age)
這裡注意指定的快取的是根據key=surename。也可以指定表示式
@cacheable(value = "employee", condition = "#age < 25")
public person findemployeebyage(string firstname, string surname, int age)
這裡指定age<25的才快取;
接下來看下如何應用,比如:
@test
public void testcache()
這個時候肯定是相等的了,因為用的是快取。但是如果呼叫的是
findemployeebysurname方法的話,就一定有點不同了,
@test
public void testcacheonsurnameaskey()
但由於是快取的是根據surename為key,所以上面結果兩個物件卻依然是相等的(儘管原本看上去是不同的物件了),所以key的選擇一定要小心。
繼續單元測試:
@test
public void testcachewithageascondition()
這兩個就一樣了,因為都是age<25的,都快取了,指向同乙個物件。
2 取消快取
下面看下如何取消快取
@cacheevict
@cacheevict(value = "employee", allentries = true)
public void resetallentries()
使用@cacheevict去取消快取,
@cacheevict支援如下幾個引數:
value:快取位置名稱,不能為空,同上
key:快取的key,預設為空,同上
condition:觸發條件,只有滿足條件的情況才會清除快取,預設為空,支援spel
allentries:true表示清除value中的全部快取,預設為false
當然,也可以@cahceable和@cacheevict一起使用,比如:
@cacheevict(value = "employee", beforeinvocation = true)
@cacheable(value = "employee")
public person evictandfindemployee(string firstname, string surname, int age)
@test
public void testbeforeinvocation()
這裡的話,先使用@cacheevict(value = "employee", beforeinvocation = true),
會先清掉所有快取,所以asset的結果就不相等了;
3 如何配置
.spring-cache
首先我們來看一下如何使用spring3.1自己的cache,
需要在命名空間中增加cache的配置
beans xmlns=""
xmlns:xsi="" xmlns:p=""
xmlns:cache=""
xsi:schemalocation="
/spring-beans-3.1.xsd
/spring-cache-3.1.xsd">
spring對ehcache並沒有很好的支援,不建議使用,可以參看
Spring 3 1 任務排程
命名空間 xsd location spring task 3.0.xsd 任務排程器配置 task scheduler pool size 排程執行緒池的大小,排程執行緒在被排程任務完成前不會空閒 task scheduled cron cron表示式,注意,若上次任務未完成,即使到了下一次排程時...
Spring 3 1 新特性一覽表
紅薯 發布於 2011年12月15日 經過接近大半年的rc,spring3.1終於release了 主要功能如rc版所示一樣,非常值得公升級 1 基於annotation的cache服務,這個非常好 這個最早源於spring2.x時代的spring modules專案中的cache子專案 我自己也曾...
spring快取cache的使用
在spring配置檔案中新增schema和spring對快取註解的支援 xmlns xmlns aop xmlns xsi xmlns mvc xmlns context xmlns tx xmlns p xmlns cache xsi schemalocation spring beans 3.0...