2

嗨,我正在我的应用程序中实现基于注释的 ehcache。我在服务层上实现了这个,我使用 DetachedCriteria 进行查询,但是 ehcache 不起作用。有人对此有任何想法吗?请帮助我或建议我其他方式来做到这一点。提前致谢

在 ehcache.xml 中

    <defaultCache eternal="true" maxElementsInMemory="100" overflowToDisk="false" />

    <cache name="loadAll" maxElementsInMemory="1000" eternal="true" overflowToDisk="false" />

</ehcache>

在我正在使用的服务层上

@Cacheable(cacheName="loadAll")
    List<ShiftDetail> loadAll(DetachedCriteria detachedCriteria);

并且在 applicationContext.xml ehcache 被映射为

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

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" >
            <property name="configLocation"  value="/WEB-INF/ehcache.xml"/>
    </bean>
4

1 回答 1

0

我希望你已经完成了以下步骤。
1. 您需要一个配置正确的ehcache.xml文件。可以在这里
找到示例 2.在您的 springapplicationcontext.xml 中查看您是否在 beans 标签中添加了正确的xsd 。
示例正确配置如下所示:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:cache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"
xsi:schemaLocation="
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.2.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
     http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring 
     http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.2.xsd
     ">
<cache:annotation-driven />
    <bean id="cacheManager"
        class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="/WEB-INF/xml/spring/ehcache.xml" /> 
    </bean>

</beans>

现在在你的方法中@Cacheable使用import com.googlecode.ehcache.annotations.Cacheable;

这是来自我的应用程序,它应该可以工作。

于 2013-03-08T18:02:16.697 回答