Spring Cache抽象-缓存管理器

原创 2017年10月04日 11:55:20

概述

CacheManager是SPI(Service Provider Interface,服务提供程序接口),提供了访问缓存名称和缓存对象的方法,同时也提供了管理缓存、操作缓存和移除缓存的方法。

下面我们来看下SpringCache框架说提供的不同的缓存管理器实现


SimpleCacheManager

通过使用SimpleCacheManager可以配置缓存列表,并利用这些缓存进行相关的操作。

SimpleCacheManager是缓存管理器的简化版本。 我们来看一下下面的配置实例。 对应缓存的定义,我们使用了ConcurrentMapCacheFactoryBean类对ComcurrentMapCache进行实例化,该实例使用了JDK的ConcurrentMap实现。

<!-- (1)添加cache命名空间和schema文件 -->    
    <!-- (2)开启支持缓存的配置项 -->
    <cache:annotation-driven cache-manager="cacheManager" proxy-target-class="true"/>
    <!-- (3) 配置cacheManger -->
    <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"
        p:caches-ref="cacheObjects">
    </bean>

    <!-- (4)caches集合 -->
    <util:set id="cacheObjects">
        <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
            p:name="default"/>
        <!-- @Cacheable(cacheNames = "littleArtisan")标注的cache名称 -->
        <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
            p:name="littleArtisan"/>
    </util:set>

NoOpCacheManager

NoOpCacheManager主要用于测试目的,事实上它并不缓存任何数据。 我们来看下该缓存管理器的配置定义,我们没有未该管理器提供缓存列表,因为它仅仅作为测试的目的

<bean id="noOpCacheManager" class="org.springframework.cache.support.NoOpCacheManager"/>

ConcurrentMapCacheManager

ConcurrentMapCacheManager使用了JDK的ConcurrentMap。 它提供了与SimpleCacheManager类似的共鞥,但并不需要像前面那样定义缓存。 该缓存定义如下:

<bean id="concurrentMapCacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager"/>

CompositeCacheManager

CompositeCacheManager能够定义多个缓存管理器。

当在应用程序上下文中声明 <cache:annotation-driven>标记时,它只提供一个缓存管理器,有的时候并不能满足用户的需求,而CompositeCacheManager定义将多个缓存管理器定义组合在一起,从而扩展了该功能。

此外,CompositeCacheManager还提供了一种机制,通过使用fallbackToNoOpCache属性回到NoOpCacheManager.

我们来看下面的的例子: 定义了一个CompositeCacheManager,将一个简单的缓存管理器与HazelCast缓存管理器绑定到一起 。 简单的缓存管理器定义了members缓存,而HazelCast缓存管理器定义了visitors.

<bean id="compositeCacheManager" class="org.springframework.cache.support.CompositeCacheManager">
        <property name="cacheManagers">
            <list>
                <!-- SimpleCacheManager -->
                <bean class="org.springframework.cache.support.SimpleCacheManager">
                    <property name="caches">
                        <set>
                            <bean id="membes"
                                class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"></bean>
                        </set>
                    </property>
                </bean>
                <!-- HazelcastCacheManager -->
                <bean id="cacheManager" class="com.hazelcast.spring.cache.HazelcastCacheManager">
                    <constructor-arg ref="hazelcast" />
                </bean>

            </list>
        </property>
    </bean>


    <hz:hazelcast id="hazelcast">
        <hz:config>
            <hz:map name="vistors">
                <hz:map-store enabled="true" class-name="com.sartisan.cache.domain.Vistor"
                    write-delay-seconds="0" />
            </hz:map>
        </hz:config>
    </hz:hazelcast>
版权声明:show me the code ,change the world

相关文章推荐

优化文件管理器的缩略图加载速度,异步处理,缓存机制

在vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter....

【翻译WINDOWS NT FILE SYSTEM INTERNAL】NT缓存管理器一(6)

缓存读操作        考虑由一个用户应用程序发起的读操作。这个读操作通过NT I/O管理器被传递到文件系统。图6-3指示,满足读请求(使用缓存管理器提供的拷贝接口)的操作顺序。        ...

【翻译WINDOWS NT FILE SYSTEM INTERNAL】NT缓存管理器一(1)

虽然不断发展的技术为我们带来了更快更便宜的存储设备,(accessingdata off secondary storage media中的off是什么意思,难道off有“从。。”的意思)从二级存储媒...

缓存管理器CacheManager

如果说spark是一把在大数据处理领域的快刀,那么spark的存储系统设计及管理等相关模块就算不是刀尖,也算得上十分锋利的刀锋了,由于工作需要,我会伴着源码来深入学习一下,这里做一个记录备忘。 ...

redisCacheManager(redis缓存管理器使用)

@Cacheable、@CachePut、@CacheEvict 注解介绍: (1)@Cacheable 作用:主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 ...

【翻译WINDOWS NT FILE SYSTEM INTERNAL】NT缓存管理器一(7)

缓存管理器接口        现在我们探讨了一般情况下文件系统驱动怎么使用缓存,让我们系统组件使用NT缓存管理器的不同方式。文件系统驱动和WINDOWS NT操作系统中其他组件可以通过四组接口例程来...

AGG 字体缓存管理器

方式三、使用字体缓存管理器每次都重新读字模是很费时的,比如前面的例子,"C++" 里的两个+ 就读两次字模,效率可以想象。一个好的办法是把已读出来的字模缓存起来,下次再遇到这个字时就不用从字体引擎里读...
  • bitasd
  • bitasd
  • 2011年06月10日 13:46
  • 1042

缓存管理器

缓存管理器Spring 3.1内置了五个缓存管理器实现,如下所示: - SimpleCacheManager - NoOpCacheManager - ConcurrentMapCacheMan...
  • L_Sail
  • L_Sail
  • 2017年05月09日 23:28
  • 139

缓存管理器

  • 2013年05月31日 14:04
  • 10.94MB
  • 下载

重建资源管理器图标缓存

  • 2013年09月21日 02:24
  • 405B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring Cache抽象-缓存管理器
举报原因:
原因补充:

(最多只允许输入30个字)