Ehcache не работает должным образом в моем проекте. Я запускаю Grails 3.3.1 "с org.grails.plugins:cache-ehcache:3.0.0.M1", и поскольку я не знаю, куда поместить файл ehcache.xml и как он должен выглядеть, я попытался настроить ehcache программно.
Я создал cacheService с помощью метода «initCaches», который я запускаю из своего bootstrap.groovy.
class CacheService {
void initCaches() {
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("sevenSeconds", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10))
.withExpiry(Expirations.timeToLiveExpiration(Duration.of(7, TimeUnit.SECONDS)))
)
.withCache("twentySeconds", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10))
.withExpiry(Expirations.timeToLiveExpiration(Duration.of(20, TimeUnit.SECONDS)))
)
.build()
cacheManager.init()
}
}
Когда я запускаю приложение, консоль говорит, что кеши созданы:
2018-06-26 15:47:31.302 INFO --- [ main] org.ehcache.core.EhcacheManager : Cache 'sevenSeconds' created in EhcacheManager.
2018-06-26 15:47:31.310 INFO --- [ main] org.ehcache.core.EhcacheManager : Cache 'twentySeconds' created in EhcacheManager.
Теперь я обращаюсь к сервисному методу, который аннотирован @Cacheable("sevenSeconds"), и начинается часть, которая меня смущает: снова консоль говорит, что кеш создан (вместо того, чтобы поместить результат в старый уже из CacheService создал один):
2018-06-26 15:47:31.302 INFO --- [ main] org.ehcache.core.EhcacheManager : Cache 'sevenSeconds' created in EhcacheManager.
Если я снова получу доступ к сервису с теми же параметрами, будет возвращен кешированный результат, НО timeToLive НЕ 7 секунд, как я создал кеш в своем CacheService.
Похоже, @Cacheable не учитывает мои созданные кеши в CacheService
Кто-нибудь знает, что я делаю неправильно?
спасибо