1. 程式人生 > >善用快取提高你的Spring工程效率

善用快取提高你的Spring工程效率

歡迎檢視Java開發之上帝之眼系列教程,如果您正在為Java後端龐大的體系所困擾,如果您正在為各種繁出不窮的技術和各種框架所迷茫,那麼本系列文章將帶您窺探Java龐大的體系。本系列教程希望您能站在上帝的角度去觀察(瞭解)Java體系。使Java的各種後端技術在你心中模組化;讓你在工作中能將Java各個技術瞭然於心;能夠即插即用。本章我們來一起了解Spring中我們如何使用快取。

快取可以儲存常用到的資訊,每次需要的時候我們都可以從快取中獲取,本章我們一起來進行了解Spring的快取抽象.儘管Spring沒有提供任何的快取的實現,但是它對快取功能提供了宣告式的支援,能夠與多種流行的快取進行整合

我們一般在Spring專案中使用快取功能我們需要對Spring專案進行一些相關的配置,流程如下

  1. 啟用對快取的支援
  2. 配置快取管理器
  3. 應用快取

啟用對快取的支援

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);

本章完整工程例項程式碼下載地址:完整專案演示工程點選下載