j2cache缓存应用

点 赞
0
热 度
61
评 论
0
  1. 首页
  2. Java开发合集
  3. 各类中间件集合
  4. j2cache缓存应用

1、常用注解

  • Cache: 缓存注解,在 Controller 的方法上使用,用于缓存此方法的返回值

  • CacheEvictor: 清理缓存注解,在 Controller 的方法上使用,用于清理指定缓存数据

  • CacheMethodInterceptor: 缓存拦截器,用于拦截加入缓存相关注解的 Controller 方法

  • AbstractCacheAnnotationProcessor: 抽象缓存注解处理器,为缓存操作提供一些公共方法

  • CachesAnnotationProcessor: 缓存注解处理器,当 Controller 的方法上加入 Cache 注解时由此处理器进行缓存处理

  • CacheEvictorAnnotationProcessor: 失效缓存注解处理器,当 Controller 的方法上加入 CacheEvictor 注解时由此处理器进行缓存失效处理

  • EnableCache: 开启缓存功能注解,一般在项目的启动类上使用,用于开启缓存功能

2、注解实现方式

1. @Documented – 表示使用该注解的元素应被javadoc或类似工具文档化,它应用于类型声明,类型声明的注解会影响客户端对注解元素的使用。
如果一个类型声明添加了Documented注解,那么它的注解会成为被注解元素的公共API的一部分。
2. @Target – 表示支持注解的程序元素的种类,一些可能的值有TYPE, METHOD, CONSTRUCTOR, FIELD等等。如果Target元注解不存在,
那么该注解就可以使用在任何程序元素之上。
3. @Inherited – 表示一个注解类型会被自动继承,如果用户在类声明的时候查询注解类型,同时类声明中也没有这个类型的注解,
那么注解类型会自动查询该类的父类,这个过程将会不停地重复,直到该类型的注解被找到为止,或是到达类结构的顶层(Object)。
4. @Retention – 表示注解类型保留时间的长短,它接收RetentionPolicy参数,可能的值有SOURCE, CLASS, 以及RUNTIME。

3、定义缓存注解实现方式

package com.itheima.j2cache.annotation;
import java.lang.annotation.*;
​
/**
 * 缓存注解
 */
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Cache {
    String region() default "rx";
    String key() default "";
    String params() default "";
}
​
package com.itheima.j2cache.annotation;
import java.lang.annotation.*;
​
/**
 * 失效缓存
 */
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CacheEvictor {
    Cache[] value() default {};
}

4、Controller层应用对照上面3的两种缓存

    @GetMapping("detail/{id}")
    @Cache(region = "addressBook", key = "ab",params = "id")
    public AddressBook detail(@PathVariable(name = "id") String id){
        // 如果缓存中没有,通过地址簿服务根据id查询
        AddressBook addressBook = addressBookService.getById(id);
        // 返回查询到的地址簿信息
        return addressBook;
    }
    @DeleteMapping("/{id}")
    @CacheEvictor({@Cache(region = "addressBook", key = "ab",params = "id")})
    public Result del(@PathVariable(name = "id") String id){
        // 调用地址簿服务的删除方法,尝试根据id删除地址簿信息
        boolean result = addressBookService.removeById(id);
        // 如果删除成功,则从缓存中移除相应的数据
        if (result){
            //cacheChannel.evict(region, id);
            // 返回操作成功的提示结果
            return Result.ok();
        }
        // 返回操作失败的提示结果
        return Result.error();
    }


余乃云水散人,栖于数字之墟。性耽幽静,常以青简为田,墨痕为穗。晨起推窗,听松风煮茶;夜阑掩卷,伴竹影扫阶。此间筑小筑三椽,藏闲话若干:或遇史海遗珠,则录以素札;偶得诗瓢碎玉,便缀作清吟。往来皆烟霞客,谈笑有鸿儒踪。诸君若得暇,不妨暂驻云履,共品一盏烟岚,半卷春秋。

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

文章目录

欢迎来到南鸢宸羲的站点,为您导航全站动态

174 文章数
38 分类数
4 评论数
47标签数
最近评论
七斗牛

七斗牛


6666