我正在开发一种拍卖系统,每隔n分钟就必须重新计算产品的价格。 我已经在我的控制器和服务级别上成功实现了带有spring boot的ehcache,现在我要缓存一些模型超类getter但是@Cacheable不能使用getCurrentPrice()方法(我也试过指定缓存名称和密钥) 。 也许Spring缓存不是为这个目的而设计的?我必须为getPrice()手动管理缓存,使用自定义缓存,或者我做错了什么?
public abstract class PricedEntity{
public abstract void getInfo();
@Cacheable
public Price getCurrentPrice(){}
//...my code here...long task computation(about 0.3 seconds)
//the price is variable every 5/10 minutes due to bid/ask and USD/EUR change value
} }
答案 0 :(得分:0)
您是否已将@EnableCaching添加到Spring Boot应用程序配置中?像这里:
@SpringBootApplication
@EnableCaching
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
答案 1 :(得分:0)
@Cacheable适用于Spring托管bean。它将适用于您自己实例化的类。
将价格计算移至单独的组件,并在第一次方法调用后使其可缓存或记忆计算值。