Синхронизация Spring Boot с кофеином не работает - PullRequest
0 голосов
/ 26 апреля 2018

Я использую 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
...