У меня есть класс, который выполняет некоторые операции чтения из службы XXX. Эти операции чтения в конечном итоге выполняют чтение БД, и я хочу оптимизировать эти вызовы, кэшируя результаты каждого метода в классе для заданного настраиваемого ключа для каждого метода.Ошибка автоматического кэширования весной
Class a {
public Output1 func1(Arguments1 ...) {
...
}
public Output2 func2(Arguments2 ...) {
...
}
public Output3 func3(Arguments3 ...) {
...
}
public Output4 func4(Arguments4 ...) {
...
}
}
Я имею в виду использование Spring caching(@Cacheable annotation)
для кэширования результатов каждого из этих методов.
Однако я хочу, чтобы кэш-недействительность выполнялась автоматически каким-то механизмом (ttl и т. Д.). Возможно ли это в кэшировании весной? Я понимаю, что у нас есть аннотация @CacheEvict
, но я хочу, чтобы выселение произошло автоматически.
Любая помощь будет оценена по достоинству.
Можете ли вы указать на конфигурацию настройки ttl для базового кэширования Spring? Я не смог найти конфигурацию, связанную с ttl, в документации, представленной в http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html –
Здравствуйте @KumarMrinal. Извините, что разочаровал вы, но кеш по умолчанию, настроенный Spring, это ConcurrentHashMap, который не поддерживает Time Live.Это означает, что вам нужно переключиться на другого провайдера, который поддерживает. EHCache тот, который я уже упомянул выше, является хорошим выбором для поставщика нераспространенных кешей. –
@AlexanderPetrov хороший ответ, что было бы лучше, предоставив ссылку провайдеру кеша (например, EhCache, который вы упомянули в своем ответе), а также ссылку на справочную документацию Spring, из которой вы получили цитату. –