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的事务传播机制 ...
随机推荐
- 《Java从入门到失业》第三章:基础语法及基本程序结构(四):基本数据类型(字符编码和char型)
3.6.4字符编码 咦?怎么好像有东西乱入了?不是讲基本数据类型么?哈哈,因为还剩下最后一个char型了,因为char型会牵涉到Unicode编码相关,因此我决定先科普一下字符集编码. 我儿子现在上小 ...
- Erlang中的宏定义应该在什么时候用
读<Erlang OTP并发编程实战>中看到这么一句话,遂做笔记以记录: 宏不是函数的替代品,当你所需的抽象无法用普通函数来实现时,宏给出了一条生路,比如,必须确保在编译期展开某些代码的时 ...
- git ssh配置
SSH KEY的配置 生成 SSH KEY ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 文件在哪里生成的 C:\用户 ...
- Codeforces Round #571 (Div. 2)-D. Vus the Cossack and Numbers
Vus the Cossack has nn real numbers aiai. It is known that the sum of all numbers is equal to 00. He ...
- graph attention network(ICLR2018)官方代码详解(te4nsorflow)
论文地址:https://arxiv.org/abs/1710.10903 代码地址: https://github.com/Diego999/pyGAT 我并没有完整看过这篇论文,但是在大致了解其原 ...
- Spring MVC实例创建(一)
Spring MVC Spring MVC 为展现底层提供的基于MVC设计理念的优秀的Web框架,是目前最流行的MVC框架之一.Spring3.0后全面超越Struts2,成为最为优秀的MVC框架.S ...
- C003:计算球体体积 自行输入球体半径
程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { float sphereRadius; do{ pri ...
- vue.js 的安装
包含vue的脚手架的安装. 1,到项目目录下输入 cnpm i -g vue-cli 2,安装完毕后咱们看看.输入 vue 即可看到vue的安装情况. 3,输入 vue list 即可看到框架的选择 ...
- 面向对象--有参数的__init__方法
有参数的__init__()方法 class Hero(object): """定义了一个英雄类,可以移动和攻击""" def __init ...
- redis加固:修改默认端口6379、密码不为空、内网服务器访问
一.windows下redis加固: 1.修改redis密码+修改redis端口 1.1.找到服务当中redis的属性配置文件是哪个 这个是我的"D:\Program Files\Red ...