Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java pojo getter的Spring缓存_Java_Spring_Spring Mvc_Ehcache - Fatal编程技术网

Java pojo getter的Spring缓存

Java pojo getter的Spring缓存,java,spring,spring-mvc,ehcache,Java,Spring,Spring Mvc,Ehcache,我正在研究一个拍卖系统,在这个系统中,每n分钟必须重新计算一次产品的价格。 我已经在我的控制器和服务级别上成功地使用spring boot实现了ehcache,现在我将缓存一些模型超类getter,但是@Cacheable不能与getCurrentPrice()方法一起工作(我还尝试指定了缓存名称和键)。 也许SpringCache不是为这个目的而设计的?我必须手动管理getPrice()的缓存,使用自定义缓存,否则我做错了什么 public abstract class PricedEntit

我正在研究一个拍卖系统,在这个系统中,每n分钟必须重新计算一次产品的价格。 我已经在我的控制器和服务级别上成功地使用spring boot实现了ehcache,现在我将缓存一些模型超类getter,但是@Cacheable不能与getCurrentPrice()方法一起工作(我还尝试指定了缓存名称和键)。 也许SpringCache不是为这个目的而设计的?我必须手动管理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
}
}

您是否已将@EnableCaching添加到Spring Boot应用程序配置中?就像这里:

@SpringBootApplication
@EnableCaching
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

我应该工作。你的课堂上有什么注解<例如,code>@Cacheable可能与
@Async
冲突


此外,它需要从外部调用。您不能执行此操作。getCurrentPrice()。它不会通过代理进行缓存。

@Cacheable用于Spring管理的bean。它将在您自己实例化的类上工作


将价格计算移动到一个单独的组件,使其可缓存,或者在第一次方法调用后将计算值记忆。

是的,缓存系统已经可以与控制器、服务和映射器方法一起工作。价格属性应该是一个spring bean,如果它是一个简单的POJO,那么它将无法工作。谢谢,这是我的猜测,也因此,我被迫手动实现pojo缓存层。