Нам нужно реализовать несколько методов с разным временем кеширования. Каждый метод помечен @Cacheable
, и наше текущее решение включает несколько CacheManager
, которые установлены в CachingConfigurerSupport
.
public class CachingConfiguration extends CachingConfigurerSupport {
@Override
@Bean
public CacheManager cacheManager() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
cacheManager.setCaffeine(Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.DAYS));
return cacheManager;
}
@Bean
public CacheManager anotherCache() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
cacheManager.setCaffeine(Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.MINUTES));
return cacheManager;
}
}
Затем аннотация @Cacheable
включала cacheManager: @Cacheable (cacheNames = "someCache", cacheManager = "anotherCache")
В основном это нормально, но также возникает ошибка, если вы забыли параметр cacheManager
и т. Д.
Поэтому в настоящее время я пытаюсь найти лучшее решение, но, насколько я понимаю, в настоящее время нет общепринятого пути.
Имхо главное преимущество CaffeineCacheManager
по сравнению, например, с SimpleCacheManager
- это возможность определить базовую конфигурацию, а затем лениво инициализировать дополнительные кеши. Но было бы здорово, если бы вы могли установить дополнительные кеши, которые никогда не инициализируются повторно?
Эти кеши должны использоваться преимущественно и создаваться в CachingConfigurerSupport
.
Может быть, я что-то упускаю, но разве это не должно решить проблему, которая уже обсуждалась в нескольких потоках в разных формах?