springboot缓存注解
Introduction
# 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支持复杂对象
Resource Information
License information is collected from official sources and may be outdated or missing. Refer to the LICENSE file in the original repository before commercial use.
Information boundary
Information on this page is collected from official documents for technical presentation only and does not imply our endorsement. Pricing, quotas and availability are subject to the latest official statements. We make no commitment regarding any action you take after leaving this site.
Similar skills
编程专家Pro.Skill
Not specified编程专家 Pro:融合编程专家 2.0.3 工程专题与编程大神的鸿蒙 ArkTS/ArkUI、微信小程序和小游戏开发资料。用于项目实现、根因调试、审查、重构、测试、架构性能分析及多端开发验证。支持自然语言和 @专题标识,按任务读取包内知识;只问概念时直接回答。
编程大神.Skill
Not specified【全栈能力】编程大神.Skill:面向复杂真实项目的高阶全栈编程助手。不止生成代码,而是从一句目标接手陌生代码库,拆解需求、补齐实现、追到根因、完成重构、联调前后端,并把结果推进到能运行、能验证、能交付。覆盖 Web、后端、脚本、iOS、安卓、鸿蒙 ArkUI、微信小程序及其他技术栈,支持中英文工程、疑难 Bug、跨模块任务和长任务续做;用构建、日志、真实入口、设备或接口证据说明结果。仅问概念时直接回答,要求落地时持续推进到验收或明确阻塞。
编程专家.Skill
API key required编程专家.Skill P8级编程助手,25年实战经验技能Skill,全栈:Java/Php网站/软件项目、API设计、Bug诊断、代码生成、代码审查、重构、测试用例、性能基准、技术选型、文档生成、任务拆解、Spec驱动、Karpathy规范、CMS二次开发、前端设计、MySQL/Mariadb、项目知识图谱,以及工程纪律层(根因调试硬闭环、阶段导航、事故复盘/SLO、威胁建模/供应链安全、生产就绪/渐进式发布、AI编码治理、面向Agent代码可读性、LLM应用安全)。支持 @标识 显式调用跳过路由。
编程专家.Skill
API key required编程专家.Skill P8级编程助手,25年实战经验技能Skill,全栈:Java/Php网站/软件项目、API设计、Bug诊断、代码生成、代码审查、重构、测试用例、性能基准、技术选型、文档生成、任务拆解、Spec驱动、Karpathy规范、CMS二次开发、前端设计、MySQL/Mariadb、项目知识图谱,以及工程纪律层(根因调试硬闭环、阶段导航、事故复盘/SLO、威胁建模/供应链安全、生产就绪/渐进式发布、AI编码治理、面向Agent代码可读性、LLM应用安全)。支持 @标识 显式调用跳过路由。
罗斯蒙德开源项目快速上手
Not specified【罗斯蒙德开源项目快速上手】南京罗斯蒙德基于已交付项目沉淀的开源项目快速上手场景:默认场景是「讲解整个项目」:给一个本地代码文件夹或仓库地址就直接开讲——先30秒最小扫描、不打断不等回复,一路产出必出五件套:一句话结论(值不值得用)、代码架构(分层+模块依赖+主调用链+扩展机制)、三级能力清单(带高频度与代码位置)、可运行带注释Demo、四段式踩坑点与上手全流程指南,每条结论挂 路径:行号。采用「假设确认表」告知而非卡流程——写一行假设就往下干,用户没回应也照出全量报告,把多轮沟通压缩为零。用户带着需求来时才额外启用「需求满足度评估」分支:先以批处理澄清表把需求歧义问清(≤5问/轮、带默认选项、≤3轮)并冻结需求基线,再逐项做代码审查,给出能否实现、修改位置(文件:行号)、工作量(档位+人日+估算依据)与不涵盖功能的补充方案。三条路由:只讲项目走主线,项目+需求走主线打底+评估,已有单点诉求只出评估。支持分析本地代码路径,无本地路径时联网检索官方文档与源码。触发词:讲解这个项目、解读这个仓库、这个代码是干嘛的、看看这个项目、快速上手、看源码、这个项目怎么用、代码架构、项目结构、核心功能、能力清单、生成 demo、写个示例、踩坑点、注意事项、上手指南、源码分析、依赖注入、开源项目、能不能支持、能不能实现、需要改哪里、改哪些地方、工作量多少、需求满足度、功能项评估、缺口分析、二次开发评估、代码审查。
Github
API key required使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
What is a Skill
A Skill is a packaged single capability, such as text recognition, document summarization, or keyword extraction. Developers wrap the calling logic and prompts into a plugin-like unit, so users can load it without understanding the underlying model. StackPilot indexes a large number of skills that can be tried instantly or assembled into a plan.