1
Spring高速緩存配置允許使用CompositeCacheManager
將fallbackToNoOpCache
屬性設置爲true來回退至無高速緩存。這怎麼可能與spring-cloud-aws緩存管理器一起使用,以便在指定不存在的緩存集羣時,複合緩存管理器會退回到沒有緩存?用一個例子的配置是這樣的:Spring Cloud AWS:可選高速緩存管理器
<aws-cache:cache-manager>
<aws-cache:cache-cluster name="CacheCluster" />
</aws-cache:cache-manager>
的應用程序時,有沒有名爲CacheCluster
集羣配置只是將無法啓動。當CompositeCacheManager
配置是這樣的:
<aws-cache:cache-manager id="elasticacheManager">
<aws-cache:cache-cluster name="CacheCluster" />
</aws-cache:cache-manager>
<bean id="cacheManager" class="org.springframework.cache.support.CompositeCacheManager">
<property name="cacheManagers">
<list>
<ref bean="elasticacheManager" />
</list>
</property>
<property name="fallbackToNoOpCache" value="true"/>
</bean>
與非現有的緩存CacheCluster,那麼應用程序無法啓動抱怨:「沒有名爲‘elasticacheManager’豆的定義」。 有沒有辦法以編程方式創建AWS高速緩存管理器,並使用類似FactoryBean的東西來實現這一點?
我檢查了CacheBeanDefinitionParser的實現,發現它創建了一個SimpleCacheManager,並且它不容易掛鉤到工廠。即使可以使用類似BeanFactoryPostProcessor的方法來檢查緩存集羣的可用性並刪除不可用的緩存,但實施此操作的開銷要比使用不同的解決方案要高,目前沒有使用Spring雲。 不幸的是,配置文件的技巧在我的情況下不起作用:實際上,它旨在用於生產環境中,以在緩存集羣不可用時提供故障安全行爲。 – kobasad