註解驅動的緩衝

來源:互聯網
上載者:User

註解驅動的緩衝

除了前面介紹的基於XML的緩衝配置,Spring Modules還支援使用代碼級中繼資料聲明緩衝。這種支援有兩種形式:

Java 5註解:如果目標環境是Java 5平台,這就是很理想的解決方案。

Jakarta公用屬性:如果目標環境是Java 5以前的平台,就應該選擇它。
對於RoadRantz程式來說,其目標環境是Java 5,所以我們要使用Java 5註解來聲明DAO層的緩衝。對於緩衝,Spring Modules提供了兩個註解:

@Cacheable:聲明一個方法的傳回值應該被緩衝。

@CacheFlush:聲明一個方法是清空緩衝的觸發器。

利用@Cacheable註解,我們可以像下面這樣把getRantsForDay()聲明為要被緩衝的:

  

modelId屬性指定用於緩衝方法傳回值的模型,稍後我們介紹說明如何定義緩衝模型,現在先來看一看如何使用@CacheFlush來指定saveRant()被調用時的緩衝清空操作:

  

modelId屬性指定的重新整理模型會在saveRant()方法被調用時被清空。

既然說到緩衝模型和重新整理模型,那麼它們是從何而來的呢?元素被用於啟動Spring Modules對註解的支援,我們會在roadrantzcache.xml檔案裡像下面這樣配置它:

  

在元素裡,必須配置至少一個元素,它就定義了一個緩衝模型。簡單 來說,緩衝模型基本上就是對ehcache.xml裡配置的一個緩衝的引用。本例中,我們把rantzCacheModel與名為rantzCache的 緩衝關聯起來,這樣一來,任何modelId是rantzCacheModel的@Cacheable都會使用名為rantzCache的緩衝。

重新整理模型與緩衝模型相當類似,只是它引用的是要被重新整理的緩衝。下面使用元素建立一個名為rantzFlushModel的重新整理模型:

 

設定緩衝模型與重新整理模型的不同之處在於,重新整理模型不僅決定要清空哪個緩衝,還決定了何時清空。在預設情況下,緩衝是在@CacheFlush註解的方法被調用之後清空的,但我們可以通過指定<ehcache:flushing>的when屬性來改變:

  

把when屬性設定為before之後,緩衝就會@CacheFlush註解的方法被調用之前清空。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.