javascript
Spring Cache抽象-缓存管理器
- 概述
- SimpleCacheManager
- NoOpCacheManager
- ConcurrentMapCacheManager
- CompositeCacheManager
概述
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>總結
以上是生活随笔為你收集整理的Spring Cache抽象-缓存管理器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cache抽象-使用Jav
- 下一篇: Spring Cache抽象-使用SpE