Solon详解(八)- Solon的缓存框架使用和定制
Solon详解系列文章:
Solon详解(一)- 快速入门
Solon详解(二)- Solon的核心
Solon详解(三)- Solon的web开发
Solon详解(四)- Solon的事务传播机制
Solon详解(五)- Solon扩展机制之Solon Plugin
Solon详解(六)- Solon的校验扩展框架使用与扩展
Solon详解(七)- Solon Ioc 的注解对比Spring及JSR330
solon.extend.data 框加在完成 @XTran 注解的支持同时,还提供了 @XCache、@XCacheRemove 注解的支持;可以为业务开发提供良好的便利性
Solon 的缓存注解只支持:XController 、XService 、XDao 类下的方法。且借签了Weed3的简洁设计方案。
(一)示例
从Demo开始,先感受一把
@XController
public class CacheController {
/**
* 执行结果缓存10秒,并添加 test_${label} 和 test1 标签
* */
@XCache(tags = "test_${label},test1" , seconds = 10)
@XMapping("/cache/")
public Object test(int label) {
return new Date();
}
/**
* 执行后,清除 标签为 test 的缓存(不过,目前没有 test 的示签...)
* */
@XCacheRemove(tags = "test")
@XMapping("/cache/clear")
public String clear() {
return "清除成功(其实无效)-" + new Date();
}
/**
* 执行后,清除 标签为 test_${label} 的缓存
* */
@XCacheRemove(tags = "test_${label}")
@XMapping("/cache/clear2")
public String clear2(int label) {
return "清除成功-" + new Date();
}
}
(二)定制分布式缓存
Solon 的缓存标签,是通过CacheService接口提供支持的。定制起来也相当的方便,比如:对接Memcached...
1. 了解 CacheService 接口:
public interface CacheService {
//保存
void store(String key, Object obj, int seconds);
//获取
Object get(String key);
//移除
void remove(String key);
}
2. 定制基于 Memcached 缓存服务:
public class MemCacheService implements CacheService{
private MemcachedClient _cache = null;
public MemCacheService(Properties props){
//略...
}
@Override
public void store(String key, Object obj, int seconds) {
if (_cache != null) {
_cache.set(key, seconds, obj);
}
}
@Override
public Object get(String key) {
if (_cache != null) {
return _cache.get(key);
} else {
return null;
}
}
@Override
public void remove(String key) {
if (_cache != null) {
_cache.delete(key);
}
}
}
3. 通过配置换掉默认的缓存服务:
@XConfiguration
public class Config {
//此缓存,将替代默认的缓存服务
@XBean
public CacheService cache(@XInject("${cache}") Properties props) {
return new MemCacheService(props);
}
}
(三)注解说明
@XCache 注解:
| 属性 | 说明 |
|---|---|
| service() | 缓存服务 |
| seconds() | 缓存时间 |
| tags() | 缓存标签,多个以逗号隔开(为当前缓存块添加标签,用于清除) |
@XCacheRemove 注解:
| 属性 | 说明 |
|---|---|
| service() | 缓存服务 |
| tags() | 清除缓存标签,多个以逗号隔开 |
Solon详解(八)- Solon的缓存框架使用和定制的更多相关文章
- Springboot mini - Solon详解(八)- Solon的缓存框架使用和定制
Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...
- Solon详解(六)- Solon的校验扩展框架使用与扩展
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- Springboot mini - Solon详解(六)- Solon的校验框架使用、定制与扩展
Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...
- Solon详解(九)- 渲染控制之定制统一的接口输出
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- Solon详解(十)- 怎么用 Solon 开发基于 undertow jsp tld 的项目?
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- Solon详解(11)- Mybatis 与 Solon 相亲相爱
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- Solon详解(二)- Solon的核心
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- Springboot mini - Solon详解(二)- Solon的核心
Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...
- Solon详解(三)- Solon的web开发
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
随机推荐
- 开源搜索引擎排名第一,Elasticsearch是如何做到的?
一.引言 随着移动互联网.物联网.云计算等信息技术蓬勃发展,数据量呈爆炸式增长.如今我们可以轻易得从海量数据里找到想要的信息,离不开搜索引擎技术的帮助. 作为开源搜索引擎领域排名第一的 Elast ...
- [CSP-S2019]树的重心 题解
CSP-S2 2019 D2T3 考场上扔了T2来打这题的部分分,然后没看到数据范围是等号,不知道怎么判完全二叉树然后40分滚粗…… ---- 思路分析 很容易想到$O(n^2)$每次暴力找重心,这个 ...
- Vue开源项目使用探索
前言 本文记录一次使用Vue开源项目的过程. 寻找Vue开源项目 要使用Vue开源项目就必须先找到一个,我们去Github上搜索[后台],然后使用Vue分类进行检索,找到排名第一的开源框架进行下载—v ...
- vue 组件内的守卫
1.beforeRouteEnter () // 进入该组件之前要去进行的逻辑操作, 2.beforeRouteLeave() // 离开该组件之前要去进行的逻辑操作(可清除定时器等耗用内存的变量, ...
- ARouter使用
1. androidstudio3.0配置 javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_ ...
- Zabbix-4.0-设置钉钉报警脚本
问题:当服务器发生报错时,有一个信息能实现自动发送到我的手机或者应用上,以达到对服务器的实时的监控与处理.邮件与短信不能满足实时性,于是想到了钉钉的通知. 思路:在钉钉里面建一个群,群里面拉个机器人. ...
- 面试【JAVA基础】JVM
1.内存模型 1.1.堆 堆是所有线程共享的,主要存放对象实例和数组. 新生代和老年代的比例是1:2. 新生代中三个区域的比例是 8 : 1 : 1. 1.1.1.新生代 对象分配在eden区中,当e ...
- [BUUOJ记录] [GXYCTF2019]Ping Ping Ping
主要考察RCE的防护绕过,感觉考的还是比较全的 先构造Payload: ?ip=127.0.0.1;ls 看到目录下有两个文件,fuzz一下发现过滤了 空格 / + * ? { } ( ) [ ]等符 ...
- vue中使用柱状图
子组件 <template> <div> <div id="myChart" :style="{width: '400px', height ...
- akka-streams - 从应用角度学习:basic stream parts
实际上很早就写了一系列关于akka-streams的博客.但那个时候纯粹是为了了解akka而去学习的,主要是从了解akka-streams的原理为出发点.因为akka-streams是akka系列工具 ...