緩存

提到緩存,你能想到什么?一級緩存,二級緩存,web緩存,redis……
你所能想到的各種包羅萬象存在的打著緩存旗號存在的各種技術(shù)或者實現(xiàn),無非都是宣揚緩存技術(shù)的優(yōu)勢就是快,無需反復(fù)查詢等。
當然,這里要講的不是一級二級,也不是redis,而是Spring的緩存支持。當時基于工作上的業(yè)務(wù)場景,考慮需要用到緩存技術(shù),但是并不清楚該用什么樣的緩存技術(shù),起初甚至有想過把信息寫到redis中,然后讀redis的信息(現(xiàn)在想想,真是小題大做),后來發(fā)現(xiàn)Spring提供了緩存的解決方案——Spring Cache。雖然最終找到了一個更加簡便討巧的方式解決了問題,但是今天還是把自己零碎的Spring Cache知識稍稍梳理下。
這里大概介紹下業(yè)務(wù)場景:

  • 現(xiàn)在有功能模塊一和功能模塊二,分別負責兩件事;

  • 執(zhí)行功能模塊二的時候,可以用到模塊一的執(zhí)行結(jié)果,當然不用也可以,那就再執(zhí)行一遍;

  • 讀取功能模塊一執(zhí)行后存放在Cache中的數(shù)據(jù),這時候就省去重新執(zhí)行模塊一的冗余操作

流程圖如下:
Android培訓,安卓培訓,手機開發(fā)培訓,移動開發(fā)培訓,云培訓培訓

Spring Cache

有關(guān)Spring Cache的理論詳細介紹可以看官方文檔或者參閱《Spring實戰(zhàn)》第十三章,這里偏代碼實戰(zhàn)看看Spring Cache如何使用。

聲明啟用緩存

就像如果要啟用AOP需要添加

<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

一樣,如果要用cache,也需要聲明

<cache:annotation-driven />

這樣還不夠,除此以外,我們還需要一個緩存管理器

<bean id="cacheManager"
          class="org.springframework.cache.support.SimpleCacheManager">
        <property name="caches">
            <set>
                <bean                        class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
             &nbs