善用快取提高你的Spring工程效率
阿新 • • 發佈:2018-11-08
歡迎檢視Java開發之上帝之眼系列教程,如果您正在為Java後端龐大的體系所困擾,如果您正在為各種繁出不窮的技術和各種框架所迷茫,那麼本系列文章將帶您窺探Java龐大的體系。本系列教程希望您能站在上帝的角度去觀察(瞭解)Java體系。使Java的各種後端技術在你心中模組化;讓你在工作中能將Java各個技術瞭然於心;能夠即插即用。本章我們來一起了解Spring中我們如何使用快取。
快取可以儲存常用到的資訊,每次需要的時候我們都可以從快取中獲取,本章我們一起來進行了解Spring的快取抽象.儘管Spring沒有提供任何的快取的實現,但是它對快取功能提供了宣告式的支援,能夠與多種流行的快取進行整合
我們一般在Spring專案中使用快取功能我們需要對Spring專案進行一些相關的配置,流程如下
- 啟用對快取的支援
- 配置快取管理器
- 應用快取
啟用對快取的支援
JavaConfig配置啟用
@Configuration
@EnableCaching
public class SpringCacheConfig {
}
XML配置啟用
<!--啟用快取-->
<cache:annotation-driven/>
配置快取管理器
在Sring中我們可以使用很多的快取管理器的實現
- ConcurrentMapCacheManager
- SimpleCacheManager
- NoOpCacheManager
- CompositeCacheManager
- EhCacheCacheManager
- RedisCacheManager
- GemfireCacheManager
- ...
JavaConfig配置快取管理器
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager();
}
XML配置快取管理器
<!--宣告快取管理器--> <bean id="cacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager"/>
應用快取
我們經常在專案中使用註解作用在方法上,使其應用快取,常見的註解如下
註解 | 描述 |
---|---|
@Cacheable | 先查快取,如果快取沒有呼叫方法,將返回值放入快取中 |
@CachePut | 始終都會將返回值放入快取中 |
@CacheEvict | 在快取中清除一個或者多個條目 |
@Caching | 分組的註解,能夠同時應用多個其他的快取註解 |
使用示例:查詢快取
@Cacheable(value = "UserCache", key = "#root.args[0]")
User getUser(String username);
使用示例:儲存快取
@CachePut(value = "UserCache", key = "#result.username")
User save(User user);
使用示例:移除快取
@CacheEvict("UserCache")
void remove(String username);
本章完整工程例項程式碼下載地址:完整專案演示工程點選下載