# 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
```