Java @缓存不工作

Java @缓存不工作,java,spring,spring-aop,spring-3,Java,Spring,Spring Aop,Spring 3,我使用@Cacheable来缓存Spring3.2中服务层的一个方法的结果。在服务类中使用以下方法代码: @Cacheable("questions") public List<ABClassObject> getSecutityQuestionsList(){ List<ABClassObject> list = new ArrayList<ABClassObject>(); ---------------- list = ----[DAO call

我使用@Cacheable来缓存Spring3.2中服务层的一个方法的结果。在服务类中使用以下方法代码:

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

return list;

}
@Cacheable(“问题”)
公共列表getSecutityQuestionsList(){
列表=新的ArrayList();
----------------
列表=-----[DAO调用]
退货清单;
}
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>

由于使用jdk 1.6,无法使用EhCache。 通过使用上面的代码模式,我无法缓存List result.DAO,当我调用上面的方法时,它总是被调用。 那么,告诉我代码有什么问题


提前谢谢。

有些事情你应该检查一下:

  • getSecutityQuestionsList方法的类是一个Springbean,也就是说,您无论如何都不会使用新的操作符
  • 方法getSecutityQuestionsList是从另一个bean调用的
  • 在xml配置中放置一个上下文:component scan base package=“xxxxx”
  • 在你的方法中加入一个断点。在堆栈跟踪中,您应该看到一些spring代理的内容。当您调用服务的这个方法时,实际上应该调用一个spring代理