Я использую Spring Boot 1.5.12.RELEASE
, с кофеином 2.6.2
в качестве поставщика кэширования.
У меня есть метод в одном из моих сервисов:
@Cacheable(cacheNames = [CacheService.MY_CACHE_NAME], sync = true)
fun fetchThing(id: Int, at: OffsetDateTime?): Thing? {
LOGGER.debug("################### $id $at #############")
// some network operation
LOGGER.debug("################### $id $at IS DONE #############")
return thing
}
Я быожидайте увидеть первый журнал только один раз, но если я вызову fetchThing
снова до разрешения первого вызова, значение будет вычислено два раза:
09:18:34.657 [XNIO-2 task-11] DEBUG c.a.n.i.thing.ThingService - ################### 3140 null #############
09:18:34.673 [XNIO-2 task-12] DEBUG c.a.n.i.thing.ThingService - ################### 3140 null #############
09:18:36.025 [XNIO-2 task-11] DEBUG c.a.n.i.thing.ThingService - ################### 3140 null IS DONE #############
09:18:36.030 [XNIO-2 task-12] DEBUG c.a.n.i.thing.ThingService - ################### 3140 null IS DONE #############
Если я вызову эту функцию снова, я не увижулюбые журналы, чтобы кэширование работало.
Так что, похоже, sync
не работает.Я что-то упустил?
РЕДАКТИРОВАТЬ: аннотации основного класса:
@SpringBootApplication(exclude = [ElastiCacheAutoConfiguration::class])
@EnableSwagger2
@EnableScheduling
@EnableCaching
@EnableTransactionManagement
class Application