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的事务传播机制 ...
随机推荐
- 【C艹】关于sort用法之重构cmp(comp)函数的笔记
众所周知,balabalabalabala············. 所以掌握sort函数(库文件:<algorithm>)的用法还是很有必要的. 一般选手只会简单地用用sort排一排数组 ...
- TX-LCN 分布式事务框架
第十章 TX-LCN 分布式事务框架 (Spring Cloud 高级) 一. 什么是分布式事务 分布式事务是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位 于不同的分布式系统的不同 ...
- Python采集CSDN博客排行榜数据
文章目录 前言 网络爬虫 搜索引擎 爬虫应用 谨防违法 爬虫实战 网页分析 编写代码 运行效果 反爬技术 前言 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知 ...
- WEBAPI 增加身份验证
1,在Webapi项目下添加如下引用: Microsoft.AspNet.WebApi.Owin Owin Microsoft.Owin.Host.SystemWeb Microsoft.Owin.S ...
- 自定义线程池ThreadPoolExecutor
使用自定义的方式创建线程池 Java本身提供的获取线程池的方式 使用Executors直接获取线程池,注意,前四个方式的底层都是通过new ThreadPoolExecutor()的方式创建的线程池, ...
- vue相关知识点及面试
### vue #### vue生命周期 beforeCreated `实例初始化,数据观察和event/watch事件配置之前被调用` created `实例创建后立即调用,数据观测,数据和方法运算 ...
- vue中实现后台管理路由标签页
<template> <section> <div class="navTabList el-tabs__nav-scroll" id="t ...
- Agumaster 将爬虫取股票名称代号子系统分出来成agumaster_crawler, 两系统通过RabbitMq连接
agumaster_crawler系统负责启动爬虫取得数据,之后便往队列中推送. agumaster_crawler系统中pom.xml关于RabbitMq的依赖是: <!-- RabbitMq ...
- 滴滴AR实景导航背后的技术
桔妹导读:机场.商场.火车站等大型室内场所内GPS信号不稳定.室内面积大.路线复杂.用户判断方向难等问题,给在大型场所内发单的乘客找上车点带来了很大的挑战,用户急需一种操作简单.交互友好的引导功能.本 ...
- graph attention network(ICLR2018)官方代码详解(tensorflow)-稀疏矩阵版
论文地址:https://arxiv.org/abs/1710.10903 代码地址: https://github.com/Diego999/pyGAT 之前非稀疏矩阵版的解读:https://ww ...