【发布时间】:2015-05-07 03:28:04
【问题描述】:
我有一个单例类(@Service 注释)。这个类有一个需要 200/300ms 执行的方法。
这个方法被@Cacheable注解并且同步了。
@Cacheable(value="nextPlaying", key = "#startingFrom.getYear() + #startingFrom.getMonth() + #startingFrom.getDay() + #startingFrom.getHours() + #startingFrom.getMinutes() + #locale.getLanguage()")
public synchronized List<Match> getNextPlaying(Date startingFrom, Locale locale)
通过启动多个调用此方法的线程,我看到对于这 200/300 毫秒,直到结果未被缓存,它会一次又一次地执行该方法,直到被缓存。 似乎 @Cacheable 注释没有考虑到 synchronized ... 这是一个错误吗?
【问题讨论】:
-
Spring 4.3 增加了对同步缓存的支持:spring.io/blog/2016/03/04/…
标签: java spring spring-cache