2012-12-17 11 views
0

我有2個XML配置文件,如下值沒有被填充到了GemFire緩存

APP-context.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:gfe="http://www.springframework.org/schema/gemfire" xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> 


    <context:component-scan 
     base-package="com.mycompany.data.testcache" /> 
    <context:annotation-config /> 

    <import resource="test-cache.xml" /> 

    <bean id="testCache" class="org.springframework.data.gemfire.GemfireTemplate"> 
     <property name="region" ref="region1" /> 
    </bean> 

</beans> 

測試cache.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gfe="http://www.springframework.org/schema/gemfire" 
    xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <context:component-scan 
     base-package="com.mycompany.data.testcache" /> 
    <context:annotation-config /> 

    <util:properties id="props" location="classpath:test-cache.properties"> 
     <prop key="log-level">info</prop> 
    </util:properties> 

    <gfe:cache id="gemfire-cache" properties-ref="props" /> 

    <gfe:local-region id="region1" cache-ref="gemfire-cache"> 
     <gfe:cache-listener ref="listener" /> 
    </gfe:local-region> 

    <bean id="listener" 
     class="com.mycompany.data.TestLoggingCacheListener" /> 
</beans> 

我有一個測試類叫做TestCache.java

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "classpath:app-context.xml" }) 
public class TestCache { 

    @Autowired 
    GemfireTemplate testCache; 

    @Test 
    public void testgetSomeValues() { 

     HashMap<String, String> map1 = retrieveSomeValues(); 

     HashMap<String, String> map2 = retrieveSomeValues(); 

     assertEquals(Map1, Map2); 
    } 

    @Cacheable(value = "testCache") 
    public HashMap<String, String> retrieveSomeValues() { 

     HashMap<String, String> obj = new HashMap<String, String>(); 
     obj.put("600", "Auto"); 
     obj.put("601", "Life"); 

     return obj; 
    } 

} 

但是我看不到任何東西實際上被緩存到該區域。對於這兩個方法調用retrieveSomeValues()方法,該方法實際上正在執行,而不是從緩存中檢索值。

我可以知道上述測試課程中出現了什麼問題。我能知道如何使用@Cacheable來緩存能夠使用的retriveSomeValues()方法的值?

回答