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() 清除缓存标签,多个以逗号隔开

最新文章

  1. IOS客户端Coding项目记录(六)
  2. [工具类]获取url中参数列表
  3. Android Paint的使用以及方法介绍(附源码下载)
  4. spring3.0的jar包详解
  5. java编译期优化与执行期优化技术浅析
  6. HTTP缓存机制梳理
  7. Balsamiq Mockups registration code
  8. bzoj3112 [Zjoi2013]防守战线
  9. 支付宝 ILLEGAL_SIGN
  10. python之数据类型详解
  11. linux 锁定重要文件 更改重要命令
  12. Github最简单实用的Git命令指南
  13. BUG管理工具——Mantis安装配置
  14. 【POJ3090】Visible Lattice Points
  15. org.json.JSONException: JSONObject["shophours"] not found.
  16. POJ 2552
  17. php curl伪造referer
  18. scala流程控制语句以及方法和函数
  19. 流式布局的使用方法--Masonry
  20. charCodeAt方法以及Unicode中文汉字编码范围

热门文章

  1. 使用log4j将数据流入flume
  2. Lambda 表达式推演全过程
  3. ARDUBOY游戏开发之路(一) 初识ARDUBOY
  4. 接口测试中postman环境和用例集
  5. 我们真的需要JWT吗?
  6. 多商铺平台手机电脑自适应宣传展示平台店铺javassh项目代码线上
  7. 【Android】Android开发可以手动进行控制的跑马灯效果,包括从左到右,以及从右到左,
  8. 在 Visual Studio for Mac 中编译和生成
  9. python文件操作、查看路径、查看文件名
  10. Shader 的 Blend