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
Springboot mini - Solon詳解(八)- Solon的快取框架使用和定製
Springboot mini - Solon詳解(九)- 渲染控制之定製統一的介面輸出
Springboot mini - Solon詳解(十)- 怎麼用 Solon 開發基於 undertow jsp tld 的專案?
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專案地址
- gitee: https://gitee.com/noear/solon
- github: https://github.com/noear/solon