2011-03-25 94 views
0

我想获得缓存工作的服务层方法,但它仍然进入它并调用数据库。我的设置错了吗?ehCache和Spring MVC错误与HIbernate

@Cacheable(cacheName="apiActivitiesCache", keyGenerator = @KeyGenerator (
      name = "ListCacheKeyGenerator", 
      properties = { 
        @Property(name="useReflection", value="true"), 
        @Property(name="checkforCycles", value="true"), 
        @Property(name="includeMethod", value="false") 
      } 
     ) 
    ) 
    public GetMemberActivitiesResponse getActivities(GetMemberActivitiesRequest request) { 

的servlet-context.xml的

<ehcache:annotation-driven cache-manager="ehCacheManager" create-missing-caches="true"/> 

    <ehcache:config cache-manager="ehCacheManager"> 
     <ehcache:evict-expired-elements interval="60" /> 
    </ehcache:config> 

    <beans:bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
     <beans:property name="configLocation" value="/WEB-INF/spring/ehcache.xml"/> 
    </beans:bean> 

ehcache.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"> 
    <defaultCache eternal="true" maxElementsInMemory="100" overflowToDisk="false" /> 
    <cache name="apiActivitiesCache" eternal="false" 
     maxElementsInMemory="100" overflowToDisk="false" diskPersistent="false" 
     timeToIdleSeconds="0" timeToLiveSeconds="300" 
     memoryStoreEvictionPolicy="LRU" /> 
</ehcache> 

回答

0

我想这与你的确切配置和它的工作。您的服务类是否将getActivities方法配置为Spring bean?

另外,getActivities方法是由另一个类调用,还是由另一个方法在同一个类中调用?

+0

getActivities方法位于我的服务层ActivitiesService.java中。它是从我的控制器层ActivitiesController.java调用的。它从控制器类中被调用,这是否甚至重要? – 2011-03-27 05:46:16

+0

这是什么? – 2011-03-29 23:34:08

1

您使用Ehcache Spring Annotations(http://groups.google.com/group/ehcache-spring-annotations)吗? 这不适用于Hibernate。

0

是由接口定义的getActivities? Spring使用基于接口的Java代理来进行注释包装,因此所有注释的方法都必须由接口定义。

+0

是的,它由接口定义。我必须用ecache属性修饰界面? – 2011-04-16 23:47:17

+0

不,可以在接口方法或实现方法中指定注释,它会被找到。另一个问题是你是否从另一个将getActivities bean作为依赖项注入的bean调用getActivities?用Spring的代理工作自我调用的方式不会被拦截。 – Eric 2011-04-17 16:36:43