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
Кто-нибудь знает, что я делаю неправильно?
ТНХ