@cachable问题 - 方法不缓存

时间:2013-01-04 09:01:47

标签: spring spring-mvc ehcache

我有一个使用@Cachable

的方法
@Cacheable(value="airport", key="#filter")
public static String getAirport(String filter, SessionFactory sessionFactory){
    String airportsDisplay = "";
    Session session = sessionFactory.openSession();
    airportsDisplay = (String) session.createQuery("select iata from Airports a where a.displaystr = :accfilter").setString("accfilter", filter.toUpperCase()).uniqueResult();
    session.close();
    return airportsDisplay;
}

所有这一切都是使用给定过滤器的数据库查询并返回机场名称。

xml configuratin是

<cache name="airport"
   maxElementsInMemory="100"
   eternal="false"
   timeToIdleSeconds="1200"
   timeToLiveSeconds="1200"
   overflowToDisk="true"
   maxElementsOnDisk="10000000"
   diskPersistent="true"
   diskExpiryThreadIntervalSeconds="1200"
   memoryStoreEvictionPolicy="LRU"/>

问题是它没有缓存结果!

在部署时,airport.data会正常创建,但无论我从我的网络应用程序调用该方法多少次,它总是为空。

Anny建议?

1 个答案:

答案 0 :(得分:5)

此方法是静态的,因此它不是Spring bean的一部分,Spring不能拦截对方法的调用并返回缓存结果而不是调用它。只有Spring bean方法可以缓存。