为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 | 缓存时间单位 |
keyPrefix:keykeyPrefix:解析SpEL表达式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) {
// ...
}
更新添加以下依赖:
更新添加Redis配置:
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配置类 |
执行脚本添加缓存注解功能:
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 个版本