2015-09-10 2 views
1

Я использую @Cacheable для кэширования результата метода на уровне сервиса Spring 3.2. Следующий код метод используется внутри класса обслуживания:@Cacheable не работает

@Cacheable("questions") 
public List<ABClassObject> getSecutityQuestionsList(){ 
List<ABClassObject> list = new ArrayList<ABClassObject>(); 
    ---------------- 
list = ----[DAO call] 

return list; 

} 

XML Конфигурация

<cache:annotation-driven /> 

    <!-- Generic cache manager based on the JDK ConcurrentMap --> 
     <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"> 
     <property name="caches"> 
      <set> 
      <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="questions" /> 
      </set> 
     </property> 
     </bean> 

Невозможно использовать EHCache из-за использования JDK 1.6. Используя приведенный выше код кода, я не могу кэшировать результат List.DAO вызывается все время, когда я вызываю вышеупомянутый метод. Итак, предскажите, что не так с кодом.

Заранее спасибо.

ответ

1

Некоторые вещи, которые вы должны проверить:

  1. Класс метода getSecutityQuestionsList является пружинный боб, то есть, вам не использовать новый оператор в любом случае.
  2. Метод getSecutityQuestionsList вызывается из другого бина
  3. В конфигурации XML поставить контекст: компонент сканирования базового пакета = «ххххх»
  4. Поставьте точку останова внутри вашего метода. В трассировке стека вы должны увидеть материал прокси-сервера весны. Когда вы вызываете этот метод своего сервиса, вы действительно должны называть весенний прокси.
Смежные вопросы