spring缓存通用配置

@Cacheable

功能:这个注解用于声明一个方法的结果是可缓存的。当方法首次被调用时,其结果会被存储在缓存中。之后,对于相同的输入参数,该方法将不会再次执行,而是直接从缓存中返回结果。

属性

  • value:缓存的名称,可以指定多个缓存。
  • key:缓存的key,可以通过SpEL表达式动态生成。
  • condition:满足条件时才会缓存结果。
  • unless:除非满足条件,否则不缓存结果。

@CacheEvict

功能:这个注解用于从缓存中移除一个或多个条目。它通常用于在数据发生变更时,确保缓存中的数据是最新的。

属性

  • value:缓存的名称。
  • key:要移除的缓存条目的key。
  • allEntries:如果为true,则移除缓存中的所有条目。
  • beforeInvocation:如果为true,则在方法执行前移除缓存条目。

@CachePut

功能:这个注解用于更新缓存中的数据。无论方法是否被调用过,它都会执行方法并将结果保存到缓存中。

属性:与@Cacheable类似,但主要用于更新操作。

CacheAnnotationParser

功能:这是一个解析器,用于解析类和方法上的缓存注解(如@Cacheable, @CacheEvict, @CachePut等)。它会读取注解的属性,并根据这些属性生成相应的缓存操作。

CacheConfig

功能:这个注解用于在类级别上提供共享的缓存配置。通过它,你可以为类中的所有缓存操作指定默认的缓存名称、key生成策略等,避免在每个方法上都重复配置。

CachingConfigurer

功能:这是一个接口,允许用户自定义缓存的配置。实现这个接口的bean会被Spring识别,并用于配置缓存管理器、缓存解析器等组件。通过它,你可以提供自己的缓存配置逻辑。

@EnableCaching

功能:这个注解用于启用Spring的缓存抽象。当你在配置类上添加这个注解时,Spring会自动检测并应用缓存相关的注解,如@Cacheable, @CacheEvict等。它还会触发缓存的初始化过程,包括创建缓存管理器、缓存解析器等。

CachingConfigurationSelector

功能:这个类用于根据应用的上下文选择正确的缓存配置。它会检查应用的依赖和配置,然后选择合适的缓存管理器实现。这使得开发者可以灵活地选择不同的缓存解决方案,如EhCache、Redis等。

SpringCacheAnnotationParser

功能:这可能是Spring框架内部用于解析缓存注解的特定实现或组件。它的功能与CacheAnnotationParser类似,但可能针对特定的Spring版本或上下文进行了优化或扩展。

这些组件共同构成了Spring的缓存抽象体系,使得开发者可以方便地实现声明式缓存,提高应用的性能和响应速度。通过合理地配置和使用这些组件,你可以有效地管理缓存数据,确保数据的一致性和实时性。

相关推荐
程序员黑豆2 小时前
AI全栈开发 - Java:注释
前端·后端·ai编程
摇滚侠2 小时前
Spring MVC 不是一个单独的框架,是 Spring 框架的一个模块
java·spring·mvc
阿正的梦工坊2 小时前
【Rust】04-借用、引用与切片
java·数据库·rust
小二·2 小时前
Spring Boot 3 + Vue 3 全栈开发实战
vue.js·spring boot·后端
devilnumber2 小时前
静态代理 & 动态代理:实战运用 + 场景区别 + 怎么选
java·开发语言·代理模式
Upsy-Daisy2 小时前
Hermes Agent 学习笔记 02:安装、配置与第一次运行
java·前端·数据库
仿生joe会梦见漫天的大雪吗2 小时前
CTF学习笔记03:密码口令 —— 从弱口令到字典爆破
后端
自进化Agent智能体2 小时前
从零到一玩转Hermes Agent:VPS部署 × 模型配置 × 记忆架构 × 多Agent协作
后端
用户4682557459132 小时前
Testcontainers 在 Windows Docker Desktop 上跑不通:协议层不兼容 + 4 种可行环境
java·后端