2015-11-13 65 views
1
的緩存

我正嘗試在我的應用中使用gemfire來執行緩存。這裏是我的屬性:找不到名爲

<context:component-scan base-package="my-base-package"/> 
<context:annotation-config/> 

<!-- Gemfire transation manager --> 
<gfe:transaction-manager id="transactionManager" cache-ref="propertyGemfireCache"/> 

<!-- Gemfire properties --> 
<util:properties id="gemfire-props" 
       location="classpath:conf/environments/gemfire.properties"/> 

<!-- Gemfire Client cache --> 
<gfe:client-cache id="propertyGemfireCache" properties-ref="gemfire-props" 
        pool-name="gemfire-pool" pdx-serializer-ref="pdxSerializer" pdx-persistent="true"/> 

<!-- Gemfire PDX serializer --> 
<bean id="pdxSerializer" class="com.gemstone.gemfire.pdx.ReflectionBasedAutoSerializer"> 
    <property name="serializableClasses"> 
     <list> 
      <value>com\.acmecorp\.enterprise\.property\..*,java\.util\..*</value> 
     </list> 
    </property> 
</bean> 

<!-- Gemfire connection pool --> 
<bean id="gemfire-pool" class="org.springframework.data.gemfire.client.PoolFactoryBean"> 
    <property name="subscriptionEnabled" value="true"/> 
    <property name="freeConnectionTimeout" value="60000"/> 
    <property name="prSingleHopEnabled" value="true"/> 
    <property name="locators" ref="gemfireLocators"/> 
</bean> 

<bean id="gemfireCacheManager" class="org.springframework.data.gemfire.support.GemfireCacheManager" 
     p:cache-ref="propertyGemfireCache"/> 

<gfe:client-region id="myRegion" name="${cache.region.name}" statistics="true" 
        cache-ref="propertyGemfireCache" shortcut="LOCAL"> 
    <gfe:region-ttl timeout="86400"/> 
</gfe:client-region> 
<bean id="myTemplate" class="org.springframework.data.gemfire.GemfireTemplate"> 
    <property name="region" ref="myRegion"/> 
</bean> 
<cache:advice id="myAdvice" cache-manager="gemfireCacheManager"> 
    <cache:caching> 
     <cache:cacheable cache="myRegion" method="getSomeData" 
         key="''+#data"/> 
    </cache:caching> 
</cache:advice> 

<aop:config> 
    <aop:advisor advice-ref="myAdvice" 
       pointcut="execution(* *..ServiceImpl.getData(..)) and within(another-my-package.service.impl..*)"/> 
</aop:config> 

物業cache.region.name等於correct_region_name。 如果我跑我的應用程序,我會得到這樣的錯誤:

無法找到名爲「myRegion」的CacheableOperation []緩存

緩存= [myRegion]但是,如果我取代「myRegion」用正確的區域,該區域是correct_region_name。所以它看起來像這樣:

<cache:cacheable cache="correct_region_name" method="getSomeData" 
         key="''+#data"/> 

一切都會完美的工作,但我不需要那樣。任何幫助?

回答

1

我認爲在客戶端緩存配置中使用屬性佔位符$ {cache.region.name}可能存在問題,以及Spring解決這些問題的順序。如果你在那裏硬編碼區域名稱,它是否工作?