快取模組使用範例


範例一:直接透過快取模組操作快取資料
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」字串,說明它沒有使用緩存,再次呼叫時直接從快取傳回值;