2013-07-27 3 views
0

Я полный источник данных noob. У меня есть интерфейс следующегоРезультаты кэширования данных хранилища данных

public interface UserBalanceRepository extends PagingAndSortingRepository<UserBalance, Integer> 
{ 
    @Cachable("UserList") 
    @Query("select userId from UserBalance") 
    List<Integer> ListUserIds(Pageable pageable); 
} 

Моя конфигурация кэш выглядит следующим образом:

<cache:annotation-driven /> 

<!-- generic cache manager --> 
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"> 
    <property name="caches"> 
    <set> 
     <bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="UserList"/> 
    </set> 
    </property> 
</bean> 

кэширование абсолютно ничего не делает. Я предполагаю, что это связано с тем, что у проксированного класса нет аннотации @Cachable, но как сделать кеширование? Есть ли другой способ сделать кеширование?

Моим последним прибегнуть к вызову, который нужно кэшировать внутри класса-оболочки и кэшировать там.

+0

Как выглядит ваша настройка кэширования? –

+0

Очень простой. Я просто использовал пример книг. Но из того, что я понимаю, проблема в том, что AspecJ не будет запускать pointcuts, которые были сделаны на интерфейсе. – Leon

+0

Вокруг не существует AspectJ. Пожалуйста, добавьте конфигурацию кэширования, так как иначе сложно судить о том, что происходит. Использование '@ Cacheable' работает, как вы показали, если вы просто настроили кеширование правильно. –

ответ

0

Я столкнулся с той же проблемой. Ваш код тот же самый с моим. Я использую eclipseLink, и мне пришлось включить кеширование на persistence.xml тоже. Я просто добавил свойство,

 [...] 
     <class>com.project.web.model.entity.ReturnOrder</class> 
     <class>com.project.web.model.entity.BillingAddress</class> 
     <exclude-unlisted-classes>false</exclude-unlisted-classes> 
     <properties> 
      <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://connection string"/> 
      <property name="javax.persistence.jdbc.user" value="user"/> 
      <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/> 
      <property name="javax.persistence.jdbc.password" value="pass"/> 

      <!-- PROPERTY ADDED --> 
      <property name="eclipselink.cache.shared.default" value="true"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

Кроме того, this это очень хороший учебник.

Смежные вопросы