Cacheable注解的详细作用和实现原理是什么?

2026-04-19 07:022阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计591个文字,预计阅读时间需要3分钟。

Cacheable注解的详细作用和实现原理是什么?

`Cacheable` 注解是 Spring 框架的缓存注解之一,它能让方法的返回值被缓存。这样,当方法被调用时,其返回值首先从缓存中获取,从而减少调用方法的次数,提高系统性能。

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

1、缓存使用步骤

Cacheable注解的详细作用和实现原理是什么?

@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属性,该属性的含义为缓存管理器。如果不指定该属性,则使用默认的缓存管理器。如果需要自定义缓存,则可以通过该属性自定义的缓存管理器。

本文共计591个文字,预计阅读时间需要3分钟。

Cacheable注解的详细作用和实现原理是什么?

`Cacheable` 注解是 Spring 框架的缓存注解之一,它能让方法的返回值被缓存。这样,当方法被调用时,其返回值首先从缓存中获取,从而减少调用方法的次数,提高系统性能。

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

1、缓存使用步骤

Cacheable注解的详细作用和实现原理是什么?

@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属性,该属性的含义为缓存管理器。如果不指定该属性,则使用默认的缓存管理器。如果需要自定义缓存,则可以通过该属性自定义的缓存管理器。