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 的項目?html
solon.extend.data
框加在完成 @Tran 註解的支持同時,還提供了 @Cache、@CachePut、@CacheRemove 註解的支持;能夠爲業務開發提供良好的便利性java
Solon 的緩存註解只支持:Controller 、Service 、Dao 類下的方法。且借簽了Weed3的簡潔設計方案。git
從Demo開始,先感覺一把github
@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...web
public interface CacheService { //保存 void store(String key, Object obj, int seconds); //獲取 Object get(String key); //移除 void remove(String key); }
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); } } }
@Configuration public class Config { //此緩存,將替代默認的緩存服務 @Bean public CacheService cache(@Inject("${cache}") Properties props) { return new MemCacheService(props); } }
@Cache 註解:緩存
屬性 | 說明 |
---|---|
service() | 緩存服務 |
seconds() | 緩存時間 |
tags() | 緩存標籤,多個以逗號隔開(爲當前緩存塊添加標籤,用於清除) |
@CachePut 註解:app
屬性 | 說明 |
---|---|
service() | 緩存服務 |
seconds() | 緩存時間 |
tags() | 緩存標籤,多個以逗號隔開(爲當前緩存塊添加標籤,用於清除) |
@CacheRemove 註解:框架
屬性 | 說明 |
---|---|
service() | 緩存服務 |
tags() | 清除緩存標籤,多個以逗號隔開 |