当前位置 : 主页 > 编程语言 > java >

Cacheable注解详解

来源:互联网 收集:自由互联 发布时间:2023-09-14
Cacheable注解是Spring框架的缓存注解之一,该注解能够让方法的返回值被缓存起来,后续的请求可以直接从缓存中获取结果,从而减少了调用方法的次数,提高了系统的性能。 1、缓存使

Cacheable注解是Spring框架的缓存注解之一,该注解能够让方法的返回值被缓存起来,后续的请求可以直接从缓存中获取结果,从而减少了调用方法的次数,提高了系统的性能。

1、缓存使用步骤

@Cacheable这个注解,用它就是为了使用缓存。

a.开启基于注解的缓存,使用@EnableCaching标识在SpringBoot的主启动类上。

b.标注缓存注解即可。

2、常用属性说明

cacheNames/value:用来指定缓存组件的名字

key:缓存数据时使用的key,可以用它来指定。默认是使用方法参数的值。

keyGenerator:key的生成器。key和keyGenerator二选一使用。

cacheManager:可以用来指定缓存管理器,从那个缓存管理器里面获取缓存。

condition:可以用来指定符合条件的情况下才缓存。条件为true,则缓存生效,否则不生效。

unless:否定缓存,当unless指定的条件为true,方法的返回值就不会被缓存。

sync:是否使用异步模式。

expire:设置缓存的过期时间,以秒为单位,如果不指定expire属性,则该缓存将一直有效。

3、使用Cacheable注解实现自定义缓存

只需要实现Cache接口,重写put、get、evict和clear方法即可。

/**
 * 支持自定义缓存的注解
 * @param id 用户id
 * @param cacheImpl 自定义的缓存实现类
 * @return 用户的姓名
 */
@Cacheable(value = "user", key = "#id", cacheManager = "customCacheManager")
public String getUserNameWithCache(String id, CustomCacheImpl cacheImpl) {
    // 从数据库或其他数据源获取用户名
    String userName = getUserInfo(id);
    return userName;
}

/**
 * 自定义的缓存实现类,实现Cache接口
 */
public class CustomCacheImpl implements Cache {
    // 实现put、get、evict和clear方法
}

指定了cacheManager属性,该属性的含义为缓存管理器。如果不指定该属性,则使用默认的缓存管理器。如果需要自定义缓存,则可以通过该属性自定义的缓存管理器。

上一篇:Arthas—帮你定位生产问题的工具
下一篇:没有了
网友评论