快取模組使用範例
範例一:直接透過快取模組操作快取資料
public static void main(String[] args) throws Exception { YMP.get().init(); try { // 操作默认缓存 Caches.get().put("key1", "value1"); System.out.println(Caches.get().get("key1")); // 操作指定名称的缓存 Caches.get().put("default", "key2", "value2"); System.out.println(Caches.get().get("default", "key2")); } finally { YMP.get().destroy(); } }
註:當指定快取名稱時,請確認與名稱對應的設定是否已存在;
執行結果:
value1 value2
##範例二:基於註解完成類別方法的快取
這裡用到了@Cacheable註解,作用是標識類別中方法的執行結果是否進行緩存,需要注意的是:首先@Cacheable註解必須在已註冊到YMP類別物件管理器的類別上聲明,表示該類別支援快取;其次,在需要快取執行結果的方法上新增@Cacheable註解;@ Cacheable註解參數說明:
cacheName:快取名稱, 預設值為default;key:快取Key, 若未設定則使用keyGenerator自動產生;# generator:Key產生器介面實作類,預設為DefaultKeyGenerator.class;scope:快取作用域,可選值為APPLICATION、SESSION和DEFAULT,預設為DEFAULT,非DEFAULT設定需要快取作用域處理器(ICacheScopeProcessor)介面配合;timeout:快取資料逾時時間, 可選參數,數值必須大於等於0,為0表示預設快取300秒;##範例程式碼:
@Bean @Cacheable public class CacheDemo { @Cacheable public String sayHi(String name) { System.out.println("No Cached"); return "Hi, " + name; } public static void main(String[] args) throws Exception { YMP.get().init(); try { CacheDemo _demo = YMP.get().getBean(CacheDemo.class); System.out.println(_demo.sayHi("YMP")); System.out.println(_demo.sayHi("YMP")); // System.out.println("--------"); // System.out.println(_demo.sayHi("YMPer")); System.out.println(_demo.sayHi("YMP")); System.out.println(_demo.sayHi("YMPer")); } finally { YMP.get().destroy(); } } }
執行結果:
#No Cached Hi, YMP Hi, YMP -------- No Cached Hi, YMPer Hi, YMP Hi, YMPer
以上結果輸出可以看出,sayHi方法相同參數首次被呼叫時將輸出「No Cached」字串,說明它沒有使用緩存,再次呼叫時直接從快取傳回值;