Spring的cache注解的使用

    xiaoxiao2021-12-02  39

    http://blog.csdn.net/stickallthetime/article/details/47659241

    1. @Cacheable

    @Cacheable 主要的参数

     

    value

    缓存的名称,在 spring 配置文件中定义,必须指定至少一个

    例如: @Cacheable(value=”mycache”) 或者  @Cacheable(value={”cache1”,”cache2”}

    key

    缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合

    例如: @Cacheable(value=”testcache”,key=”#userName”)

    condition

    缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存

    例如: @Cacheable(value=”testcache”,condition=”#userName.length()

    如下示例:

    @Cacheable(value = "statisticServiceCache", key = "'activityChartData_' + #urlID")

    public ResultInfo getActivityChartData(String urlID, Date startMonth,

    Date endMonth) {

        …

    }

    这个注解用于,在调用被注解的方法时,首先检查当前缓存系统中是否存在键值为key的缓存。如果存在,则直接返回缓存对象,不执行该方法。如果不存在,则调用该方法,并将得到的返回值写入缓存中。

    2. @CachePut

    @CachePut 主要的参数

     

    value

    缓存的名称,在 spring 配置文件中定义,必须指定至少一个

    例如: @Cacheable(value=”mycache”) 或者  @Cacheable(value={”cache1”,”cache2”}

    key

    缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合

    例如: @Cacheable(value=”testcache”,key=”#userName”)

    condition

    缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存

    例如: @Cacheable(value=”testcache”,condition=”#userName.leng

    @CachePut用于写入缓存,但是与@ Cacheable不同,@CachePut注解的方法始终执行,然后将方法的返回值写入缓存,此注解主要用于新增或更新缓存。

    3. @CacheEvict 

    @CacheEvict 主要的参数

     

    value

    缓存的名称,在 spring 配置文件中定义,必须指定至少一个

    例如: @CachEvict(value=”mycache”) 或者  @CachEvict(value={”cache1”,”cache2”}

    key

    缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合

    例如: @CachEvict(value=”testcache”,key=”#userName”)

    condition

    缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才清空缓存

    例如: @CachEvict(value=”testcache”, condition=”#userName.length()>2”)

    allEntries

    是否清空所有缓存内容,缺省为 false,如果指定为 true,则方法调用后将立即清空所有缓存

    例如: @CachEvict(value=”testcache”,allEntries=true)

    beforeInvocation

    是否在方法执行前就清空,缺省为 false,如果指定为 true,则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,则不会清空缓存

    例如: @CachEvict(value=”testcache”beforeInvocation=true)

    @CacheEvict用于删除缓存

    转载请注明原文地址: https://ju.6miu.com/read-679761.html

    最新回复(0)