Aspect Cache是一个针对Spring Boot,基于AOP注解方式的轻量级缓存,目前支持EHCache,Redis缓存方式。数据类型支持POJO、Map和List数据类型,同时支持自定义缓存key解析,也支持自定义的缓存处理方式,或者扩展支持更多缓存方式。 缓存key使用Spring表达式(SpEL)解析生成。
<dependency>
<artifactId>aspect-cache</artifactId>
<groupId>com.gosalelab</groupId>
<version>1.0.0</version>
</dependency>
@EnableAspectCache
com.gosalelab.cache.enable=true
com.gosalelab.cache.provider=eh
或
com.gosalelab.cache.provider=redis
名称 | 配置项 | 数据类型 | 可选值 | 默认值 | 必填 | 说明 |
---|---|---|---|---|---|---|
com.gosalelab.cache | enable | boolean | true | false | false | Y | 是否启用Aspect Cache |
com.gosalelab.cache | provider | String | eh | redis | eh | Y | 默认使用EHCache,如果要使用redis,则改为redis即可 |
com.gosalelab.cache | expire-time | int | / | 3600秒(半小时) | N | 全局缓存时间 |
com.gosalelab.cache | key-generator | String | / | default | N | 默认缓存key生成类,可以通过扩展KeyGenerator接口,使用自定义类,具体扩展方法见“自定义缓存key生成类”描述 |
com.gosalelab.cache.ehcache | default-cache-name | String | / | ehcache_cache | N | EHCache缓存名称 |
com.gosalelab.cache.ehcache | disk | int | / | 200 | N | 可使用磁盘持久化多大,单位为:MB |
com.gosalelab.cache.ehcache | ehcache-file-name | String | / | ehcache.xml | N | EHCache外部配置文件名,使用此配置项需要将com.gosalelab.cache.ehcache.use-xml-file-config 设置为true |
com.gosalelab.cache.ehcache | max-entries-local-heap | int | / | 1000 | N | 堆资源池可存储条目数量 |
com.gosalelab.cache.ehcache | off-heap | int | / | 20 | N | 非堆资源池存储大小,单位为:MB |
com.gosalelab.cache.ehcache | use-xml-file-config | boolean | true | false | false | N | 是否使用xml配置文件 |
com.gosalelab.cache.redis-cache | database | int | / | 0 | N | 缓存存在redis哪一个数据库 |
com.gosalelab.cache.redis-cache | host | String | / | 127.0.0.1 | N | redis服务器地址 |
com.gosalelab.cache.redis-cache | max-idle | int | / | 100 | N | 最大允许空闲对象数 |
com.gosalelab.cache.redis-cache | max-total | int | / | 1000 | N | 最大活动对象数 |
com.gosalelab.cache.redis-cache | max-wait-millis | int | / | 1000 | N | 最大等待时间,单位:毫秒 |
com.gosalelab.cache.redis-cache | min-idle | int | / | 20 | N | 最小允许空闲对象数 |
com.gosalelab.cache.redis-cache | password | String | / | / | N | redis服务器登录密码 |
com.gosalelab.cache.redis-cache | port | int | / | 6379 | N | redis服务器连接端口号 |
com.gosalelab.cache.redis-cache | timeout | int | / | 2000 | N | 连接超时时间,单位:毫秒 |
- 继承KeyGenerator接口,实现getKey方法,可参考默认实现方法。
- 在新的类上添加如下注解,注解名称命名规则为:自定义名称 + KeyGenerator,如:defaultKeyGenerator。
- 然后在配置文件中使用如下方式使用缓存key自定义类:
com.gosalelab.cache.key-generator = xxx
- 继承
CacheProvider
接口,实现put、get、del方法 - 添加注解:
@Component("xxxCacheProvider")
,注解命名规则为:自定义名称 + CacheProvider - 然后再配置文件中使用如下方式使用自定义缓存提供类:
com.gosalelab.cache.provider = xxx
- 在
properties
文件夹下新增配置文件 - 在
CacheProperties
文件初始化新增配置类 - 在新初始化配置类中添加
@NestedConfigurationProperty
注解 - 重新编译项目文件
- 在application.properties中使用配置项,按照如下方式:
com.gosalelab.cache.新增配置.具体配置项 = 新增配置值
- 注解
@CacheInject
用于缓存写入和读取 - 注解
@CacheEvict
用于删除缓存
- key:缓存key
- expire:缓存时间,单位:秒
- pre:缓存key的前缀
- desc:描述
- opType:缓存操作方式,可选值有:
CacheOpType.READ_WRITE
:读和写缓存,CacheOpType.WRITE
:只写缓存,CacheOpType.READ_ONLY
:只读缓存
- key:缓存key
- pre:缓存key的前缀
- desc:描述
具体参考自带Demo中的测试类:com.gosalelab.testcase.CacheTest
默认使用SpEL
表达式,具体的使用可以参考Demo中的测试项。
- 增加加英文文档
- 添加缓存后台管理功能
- 进一步优化代码