缓存

提到缓存,你能想到什么?一级缓存,二级缓存,web缓存,redis……
你所能想到的各种包罗万象存在的打着缓存旗号存在的各种技术或者实现,无非都是宣扬缓存技术的优势就是快,无需反复查询等。
当然,这里要讲的不是一级二级,也不是redis,而是Spring的缓存支持。当时基于工作上的业务场景,考虑需要用到缓存技术,但是并不清楚该用什么样的缓存技术,起初甚至有想过把信息写到redis中,然后读redis的信息(现在想想,真是小题大做),后来发现Spring提供了缓存的解决方案——Spring Cache。虽然最终找到了一个更加简便讨巧的方式解决了问题,但是今天还是把自己零碎的Spring Cache知识稍稍梳理下。
这里大概介绍下业务场景:

  • 现在有功能模块一和功能模块二,分别负责两件事;

  • 执行功能模块二的时候,可以用到模块一的执行结果,当然不用也可以,那就再执行一遍;

  • 读取功能模块一执行后存放在Cache中的数据,这时候就省去重新执行模块一的冗余操作

流程图如下:
Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

Spring Cache

有关Spring Cache的理论详细介绍可以看官方文档或者参阅《Spring实战》第十三章,这里偏代码实战看看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