← 返回
未分类

springboot缓存注解

# SpringBoot 缓存注解技能 ## 技能描述 为SpringBoot项目添加基于Redis的缓存注解功能,通过 `@CacheResult` 注解实现方法返回值的缓存。 ## 使用场景 当用户需要在已有的SpringBoot项目基础上添加缓存功能时使用此技能。 ## 依赖关系 此技能依赖于 springboot-init 技能生成的基础项目结构。 ## 功能说明 ### 注解参数 | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | keyPrefix | String | "project:cache" | 缓存key的前缀 | | key | String | "" | 普通缓存key | | spelKey | String | "" | SpEL表达式缓存key | | cacheTime | int | 1 | 缓存时间 | | cacheTimeUnit | TimeUnit | TimeUnit.HOURS | 缓存时间单位 | ### Key生成策略 1. **优先使用普通key**: `keyPrefix:key` 2. **次优先使用SpEL**: `keyPrefix:解析SpEL表达式` 3. **默认策略**: `keyPrefix:类全限定名:方法名:AES(参数)` ### 使用示例 ```java // 使用普通key @CacheResult(keyPrefix = "user:", key = "info") public User getUser(Long userId) { // ... } // 使用SpEL key @CacheResult(keyPrefix = "user:", spelKey = "#userId") public User getUser(Long userId) { // ... } // 使用默认key (MD5加密参数) @CacheResult(cacheTime = 30, cacheTimeUnit = TimeUnit.MINUTES) public User getUser(Long userId) { // ... } ``` ## 生成的依赖 - cn.hutool:hutool-all (MD5加密工具) - spring-boot-starter-data-redis (Redis缓存) - spring-boot-starter-aop (AOP切面支持) ## 生成的配置文件 ### pom.xml 更新添加以下依赖: - hutool-all - spring-boot-starter-data-redis - spring-boot-starter-aop ### application.yml 更新添加Redis配置: ```yaml spring: data: redis: host: localhost port: 6379 password: database: 0 timeout: 3000ms ``` ## 生成的文件 | 文件路径 | 说明 | |----------|------| | annotation/CacheResult.java | 缓存注解 | | common/CacheNullValue.java | null值标记类 | | util/CacheKeyGenerator.java | Key生成工具类 | | aspect/CacheResultAspect.java | 缓存AOP切面 | | config/RedisConfig.java | Redis配置类 | ## 脚本执行 执行脚本添加缓存注解功能: ```bash python .trae/skills/springboot-cache/scripts/cache_annotation.py <artifactId> <packageName> [projectName] [springBootVersion] [author] ``` 示例: ```bash # 基本用法 python .trae/skills/springboot-cache/scripts/cache_annotation.py demo com.example # 指定项目信息 python .trae/skills/springboot-cache/scripts/cache_annotation.py demo com.example Demo 3.5 wql ``` ## 技术特性 1. **MD5加密**: 使用Hutool的MD5工具类,生成确定性Key 2. **SpEL表达式支持**: 支持 `#参数名`、`#参数.属性` 等表达式语法 3. **null值缓存**: 通过CacheNullValue标记类区分"未缓存"和"缓存了null" 4. **异常安全**: 缓存操作失败不影响业务执行 5. **Jackson序列化**: 使用GenericJackson2JsonRedisSerializer支持复杂对象
巧凤
未分类 community v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 200
下载
💾 8
安装
1
版本
#latest

概述

SpringBoot 缓存注解技能

技能描述

为SpringBoot项目添加基于Redis的缓存注解功能,通过 @CacheResult 注解实现方法返回值的缓存。

使用场景

当用户需要在已有的SpringBoot项目基础上添加缓存功能时使用此技能。

依赖关系

此技能依赖于 springboot-init 技能生成的基础项目结构。

功能说明

注解参数

参数类型默认值说明
--------------------------
keyPrefixString"project:cache"缓存key的前缀
keyString""普通缓存key
spelKeyString""SpEL表达式缓存key
cacheTimeint1缓存时间
cacheTimeUnitTimeUnitTimeUnit.HOURS缓存时间单位

Key生成策略

  1. 优先使用普通key: keyPrefix:key
  2. 次优先使用SpEL: keyPrefix:解析SpEL表达式
  3. 默认策略: keyPrefix:类全限定名:方法名:AES(参数)

使用示例

// 使用普通key
@CacheResult(keyPrefix = "user:", key = "info")
public User getUser(Long userId) {
    // ...
}

// 使用SpEL key
@CacheResult(keyPrefix = "user:", spelKey = "#userId")
public User getUser(Long userId) {
    // ...
}

// 使用默认key (MD5加密参数)
@CacheResult(cacheTime = 30, cacheTimeUnit = TimeUnit.MINUTES)
public User getUser(Long userId) {
    // ...
}

生成的依赖

  • cn.hutool:hutool-all (MD5加密工具)
  • spring-boot-starter-data-redis (Redis缓存)
  • spring-boot-starter-aop (AOP切面支持)

生成的配置文件

pom.xml

更新添加以下依赖:

  • hutool-all
  • spring-boot-starter-data-redis
  • spring-boot-starter-aop

application.yml

更新添加Redis配置:

spring:
  data:
    redis:
      host: localhost
      port: 6379
      password:
      database: 0
      timeout: 3000ms

生成的文件

文件路径说明
----------------
annotation/CacheResult.java缓存注解
common/CacheNullValue.javanull值标记类
util/CacheKeyGenerator.javaKey生成工具类
aspect/CacheResultAspect.java缓存AOP切面
config/RedisConfig.javaRedis配置类

脚本执行

执行脚本添加缓存注解功能:

python .trae/skills/springboot-cache/scripts/cache_annotation.py <artifactId> <packageName> [projectName] [springBootVersion] [author]

示例:

# 基本用法
python .trae/skills/springboot-cache/scripts/cache_annotation.py demo com.example

# 指定项目信息
python .trae/skills/springboot-cache/scripts/cache_annotation.py demo com.example Demo 3.5 wql

技术特性

  1. MD5加密: 使用Hutool的MD5工具类,生成确定性Key
  2. SpEL表达式支持: 支持 #参数名#参数.属性 等表达式语法
  3. null值缓存: 通过CacheNullValue标记类区分"未缓存"和"缓存了null"
  4. 异常安全: 缓存操作失败不影响业务执行
  5. Jackson序列化: 使用GenericJackson2JsonRedisSerializer支持复杂对象

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-04-21 21:57 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

springboot项目创建

user_faca7523
初始化SpringBoot项目基础结构。包含Maven标准目录、标准包结构、pom.xml、application.yml、启动类、Knife4j文档配置。当用户需要创建新的SpringBoot项目基础时使用此技能。
★ 1 📥 170

引入mybatis-plus,自动填充,分页插件

user_faca7523
为SpringBoot项目添加数据库和持久层配置。包含MySQL Connector、MyBatisPlus、分页插件、自动填充。此技能依赖于springboot-init生成的基础项目结构。
★ 0 📥 166

sql表逆向实体类和mapper和service

user_faca7523
SQL建表语句逆向生成Java实体类,支持MySQL数据库,自动生成MyBatis-Plus和Lombok注解。当用户需要从SQL CREATE TABLE语句生成Java实体类时使用此skill,包括:(1) 解析SQL建表语句,(2)
★ 0 📥 168