# cache4j-spring-boot-starter **Repository Path**: easy-work/cache4j-spring-boot-starter ## Basic Information - **Project Name**: cache4j-spring-boot-starter - **Description**: springboot 注解式缓存方案 目前支持缓存落地方案 -redis 依赖 -baomidou-lock4j 防缓存seting环节并发问题 -spring-data-redis java与redis交互方案 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-07 - **Last Updated**: 2024-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Cache4j ### 简述 注解声明式缓存处理方案 ## 示例 ```xml xyz.funnone cache4j-spring-boot-starter 2.7.9-SNAPSHOT ``` ###### from V1 ```java import org.springframework.stereotype.Service; import xyz.funnone.cache4j.annotation.Cache; import xyz.funnone.cache4j.util.cache.Cacher; @Service @Cache(name = "app-config") public class AppConfigService { /** * 配置查询 * 例:key = pwd * 缓存键 cache4j:app-config:get#key=pwd * 过期时间 默认10m */ @Cache(name = "get", key = "'key=' + #key") public String get(String key) { //动态定义有效期 Cacher cacher = Cacher.getInstance(); cacher.setExpire("1m"); //或者自定义秒数 cacher.setExpireS(60); //无论那种方式, 最终经过ExpireTimeCalculator::getTargetDate return "select result"; } } ``` 配置属性示例 ```yaml #spring.profiles.active=test/dev/prod...环境区分 cache4j: # 统一缓存前缀 prefix: cache4j:${spring.profiles.active} # name&key拼接符 splicer: '#' # obj&str转换工具, 可继承重写自定义序列化方法 converter: xyz.funnone.cache4j.util.Converter # 过期时间计算工具, 支持重写到期时间计算规则 expireTimeCalculator: xyz.funnone.cache4j.util.ExpireTimeCalculator ``` 应用注解释意 * [@Cache](src/main/java/xyz/funnone/cache4j/annotation/Cache.java) ``` properties: --name = "classname/methodName" # 前缀 --key = "'name=' + #{name}" # 关键字, 通过SpEL&方法参数动态拼接 --update = true # 执行并更新缓存结果 --save = true # 有缓存则返回, 无缓存则执行并返回 --clear = true # 移除缓存并执行方法 --expire = '10m' # 缓存有效期, 10m:十分钟 #--saveEmpty = true # 方法运行结果为空仍然缓存(EmptyUtil.isEmpty) TODO !注 1.缓存key=(配置前缀+类注解Cache.name()+方法上注解Cache.name()+方法注解Cache.key()) 2.缓存有效期默认为10m, 如果expire=''缓存内容将不再过期, 有效期计算方法 ExpireTimeCalculator::getTargetDate(可继承自定义) /** * 获取超时时间 Date *

* 10s : 表示10秒有效 * 10m 结尾: 表示10分钟有效 * 10h 结尾: 表示10小时有效 *

* 1d : 表示有效时间到第二天 00:00:00 * 2d1h : 表示有效时间到第三天 01:00:00
* `d` 后面 只支持上面三个(`s`,`m`,`h`)之一 * * @param expireTime 表达式 * @return 到期时间 */ ``` 引用依赖 ```xml com.baomidou lock4j-redis-template-spring-boot-starter 2.2.1 org.springframework.boot spring-boot-starter-data-redis cn.hutool hutool-core 5.8.11 ``` ``` 作者 - @funnone 修订记录 - 2.3.9.RELEASE: 初版内容, 支持save,update,clear,expire配置 by funnone ---- - 2.7.8 : 改动 1、拼接规则 prev + name + splicer + key, splicer自定义 2、序列化规则 方法返回值序列化为缓存值时调用的方法支持自定义 3、过期计时规则 缓存内容有效期表达式支持解析计算自定义 by funnone ---- ``` ```yaml more: #from http://exp-blog.com/tools/fa-bu-jar-dao-maven-zhong-yang-cang-ku-quan-liu-cheng-zhi-yin/ deploy: mvn clean deploy -P ttyForDeploy -Dmaven.test.skip=true -e ```