Springboot min -Solon 详解系列文章:

Springboot mini - Solon详解(一)- 快速入门

Springboot mini - Solon详解(二)- Solon的核心

Springboot mini - Solon详解(三)- Solon的web开发

Springboot mini - Solon详解(四)- Solon的事务传播机制

Springboot mini - Solon详解(五)- Solon扩展机制之Solon Plugin

Springboot mini - Solon详解(六)- Solon的校验框架使用、定制与扩展

Springboot mini - Solon详解(七)- Solon Ioc 的注解对比Spring及JSR330

solon.extend.data 框加在完成 @Tran 注解的支持同时,还提供了 @Cache、@CachePut、@CacheRemove 注解的支持;可以为业务开发提供良好的便利性

Solon 的缓存注解只支持:Controller 、Service 、Dao 类下的方法。且借签了Weed3的简洁设计方案。

(一)示例

从Demo开始,先感受一把

@Controller
public class CacheController {
/**
* 执行结果缓存10秒,并添加 test_${label} 和 test1 标签
* */
@Cache(tags = "test_${label},test1" , seconds = 10)
@Mapping("/cache/")
public Object test(int label) {
return new Date();
} /**
* 执行后,清除 标签为 test 的缓存(不过,目前没有 test 的示签...)
* */
@CacheRemove(tags = "test")
@Mapping("/cache/clear")
public String clear() {
return "清除成功(其实无效)-" + new Date();
} /**
* 执行后,清除 标签为 test_${label} 的缓存
* */
@CacheRemove(tags = "test_${label}")
@Mapping("/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. 通过配置换掉默认的缓存服务:

@Configuration
public class Config {
//此缓存,将替代默认的缓存服务
@Bean
public CacheService cache(@Inject("${cache}") Properties props) {
return new MemCacheService(props);
}
}

(三)注解说明

@Cache 注解:

属性 说明
service() 缓存服务
seconds() 缓存时间
tags() 缓存标签,多个以逗号隔开(为当前缓存块添加标签,用于清除)

@CachePut 注解:

属性 说明
service() 缓存服务
seconds() 缓存时间
tags() 缓存标签,多个以逗号隔开(为当前缓存块添加标签,用于清除)

@CacheRemove 注解:

属性 说明
service() 缓存服务
tags() 清除缓存标签,多个以逗号隔开

附:Solon项目地址

Springboot mini - Solon详解(八)- Solon的缓存框架使用和定制的更多相关文章

  1. Springboot mini - Solon详解(四)- Solon的事务传播机制

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  2. Springboot mini - Solon详解(二)- Solon的核心

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  3. Springboot mini - Solon详解(三)- Solon的web开发

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  4. Springboot mini - Solon详解(五)- Solon扩展机制之Solon Plugin

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  5. Springboot mini - Solon详解(六)- Solon的校验框架使用、定制与扩展

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  6. Springboot mini - Solon详解(七)- Solon Ioc 的注解对比Spring及JSR330

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  7. Solon详解(八)- Solon的缓存框架使用和定制

    Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...

  8. Solon详解(九)- 渲染控制之定制统一的接口输出

    Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...

  9. Solon详解(十)- 怎么用 Solon 开发基于 undertow jsp tld 的项目?

    Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...

随机推荐

  1. python-网络安全编程第一天(requests模块)

    前言 感觉现在做好多CTF题都需要python去写工具,正好期末考试放假利用空余时间来学学. requests简介 Requests是用python语言基于urllib编写的,采用的是Apache2 ...

  2. MindManager使用教程:如何导出HTML5交互式导图

    Mindmanager思维导图软件有着友好的用户界面以及丰富的思维导图制作功能.再搭配与Microsoft 软件的无缝集成功能,使得这款思维导图软件越来越受到职场人士的喜爱. 不仅是作为制作思维导图的 ...

  3. 如何使用会声会影制作动态logo字幕

    日常生活中大家在参加一些婚礼.聚会的时候,LED屏幕上播放的视频里面常常会有一行字,它随着视频的播放自己也在不断地改变颜色,非常醒目.想必大家也想把这种动态文字用在自己的视频中,为视频增添亮点.那么今 ...

  4. FL Studio通道乐器设置页详讲

    上一篇文章我们说到FL Studio通道乐器设置页每个标签页面中几乎都是由包络.低频振荡器和滤波器这三个部分组成.我们之前只对包络进行的简单的介绍,相信很多同学对它还有其他两个的功能的了解还是云里雾里 ...

  5. 换系统之后为什么iMindMap会提示“许可证使用的次数过多”

    iMindMap是一款十分受欢迎的思维导图软件,随着12版本的上线,iMindMap新增了很多新用户,最近小编发现有不少新用户在群里反映:"为什么购买iMindMap时说可以支持换机,但是在 ...

  6. python debug调试

    ------------恢复内容开始------------ 一.debug 1.step over f8(单步调试) 2.进入到下一个断点 3.运行到指定行 4.进入到对应的代码行,(和单步调试配合 ...

  7. jmeter脚本的编写

    前几天讲到了性能测试的入门,今日继续来讲解jmeter的使用,本文讲的都是比较细,希望各位耐心的看完. 一.jmeter的安装与打开 前提条件:给大家一个jmeter的安装包  百度网盘的路径如下:链 ...

  8. iOS程序内实现版本更新

    最近这段时间刚把手头里面的两个项目交付出去,很想写点东西但又不想随随便便的写些抒情的文字,其实生活中的很多事情.成长的路上遇到的很多问题,并非简简单单的抱怨.埋怨,用一种激情悲昂的情绪去逃避.去发泄所 ...

  9. exgcd 学习笔记

    最大公约数 更相减损术:\(\gcd(x,y)=\gcd(x,y-x)(x\leq y)\). 证明: 设 \(\gcd(x,y)=k\),则 \(x=kp,y=kq,\gcd(p,q)=1\). 那 ...

  10. miniconda安装及使用

    conda环境配置 安装conda [清华源下载地址](https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/) 官网或百度云网盘下载对应版本 ...