キャッシュモジュールの使用例


例 1: キャッシュモジュールを介してキャッシュされたデータを直接操作する
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
例 2: アノテーションに基づくクラス メソッドのキャッシュ

ここでは @Cacheable アノテーションが使用されており、クラス内のメソッドの実行結果がキャッシュされるかどうかを識別するために使用されます。

まず、YMP クラス オブジェクト マネージャーに登録されているクラスで @Cacheable アノテーションを宣言し、そのクラスがキャッシュをサポートしていることを示す必要があります。

次に、必要なメソッドに @Cacheable アノテーションを追加します。実行結果をキャッシュするための

@Cacheable アノテーション パラメータの説明:

cacheName: キャッシュ名、デフォルト値はデフォルトです。設定されていない場合は、keyGenerator を使用して自動的に生成されます。ジェネレーター: キージェネレーターインターフェース実装クラス、デフォルトは DefaultKeyGenerator.class;

scope: キャッシュスコープ、選択された値は APPLICATION、SESSION、および 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();
        }
    }
}

上記の結果出力からわかるように、sayHiメソッドの同じパラメータが初めて文字列で呼び出されたときに「キャッシュなし」文字が出力され、キャッシュされていることを示します。キャッシュを使用せず、再度呼び出されたときにキャッシュから値を直接返します