ehCache и Spring MVC Ошибка с HIbernate - PullRequest
0 голосов
/ 26 марта 2011

Я пытаюсь заставить кэширование работать на методе уровня сервиса, но он все равно входит в него и вызывает базу данных. У меня неправильная настройка?

@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) {

сервлет-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>

Ответы [ 3 ]

1 голос
/ 07 апреля 2011

Используете ли вы аннотации Ehcache Spring (http://groups.google.com/group/ehcache-spring-annotations)? Это не работает с Hibernate.

0 голосов
/ 13 апреля 2011

Определены ли getActivities интерфейсом?Spring использует основанные на интерфейсе Java-прокси для оболочек аннотаций, поэтому все аннотированные методы должны определяться интерфейсом.

0 голосов
/ 27 марта 2011

Я попробовал это с вашей точной конфигурацией, и это сработало. Ваш класс обслуживания, в котором метод getActivities настроен как bean-компонент Spring?

Кроме того, метод getActivities вызывается другим классом или другой метод в том же классе?

...