@cachable问题 - 方法不缓存

Ale*_*NIS 0 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;
}
Run Code Online (Sandbox Code Playgroud)

它所做的就是使用给定过滤器的数据库查询并返回机场名称.

xml configuratin是

<cache name="airport"
   maxElementsInMemory="100"
   eternal="false"
   timeToIdleSeconds="1200"
   timeToLiveSeconds="1200"
   overflowToDisk="true"
   maxElementsOnDisk="10000000"
   diskPersistent="true"
   diskExpiryThreadIntervalSeconds="1200"
   memoryStoreEvictionPolicy="LRU"/>
Run Code Online (Sandbox Code Playgroud)

问题是它不会缓存结果!

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

安妮的建议?

JB *_*zet 5

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