Spring Boot: кэширование
Spring Framework поддерживает прозрачное добавление кэширования в приложение. По своей сути абстракция применяет кэширование к методам, тем самым уменьшая количество выполнений на основе информации, доступной в кэше. Логика кэширования применяется прозрачно, без какого-либо вмешательства в вызывающего. Spring Boot автоматически конфигурирует инфраструктуру кэша, если поддержка кэширования включена с помощью аннотации @EnableCaching.
В двух словах, добавить кэширование в работу вашего сервиса так же просто, как добавить соответствующую аннотацию к его методу, как показано в следующем примере:
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;
@Component
public class MathService {
@Cacheable("piDecimals")
public int computePiDecimal(int i) {
// ...
}
}
Этот пример демонстрирует использование кэширования в потенциально дорогостоящей операции. Перед вызовом computePiDecimal абстракция ищет в кэше piDecimals запись, соответствующую аргументу i. Если запись найдена, содержимое в кэше немедленно возвращается вызывающей стороне, и метод не вызывается. В противном случае метод вызывается, и кэш обновляется перед возвратом значения.
Вы также можете прозрачно использовать стандартные аннотации JSR-107 (JCache) (например, @CacheResult). Однако настоятельно рекомендуется не смешивать и сопоставлять аннотации Spring Cache и JCache.
Если вы не добавите какую-либо определенную библиотеку кэша, Spring Boot автоматически настроит простого поставщика, который использует конкурентные карты в памяти. Когда требуется кэш (например, piDecimals в предыдущем примере), этот провайдер создает его для вас. Простой провайдер на самом деле не рекомендуется для производственного использования, но он отлично подходит для начала работы и обеспечения понимания функций. Почти все провайдеры требуют явной настройки каждого кэша, который вы используете в приложении. Некоторые предлагают способ настройки кэшей по умолчанию, определенных свойством spring.cache.cache-names.
Также возможно прозрачное обновление или удаление данных из кэша.
Читайте также:
- Spring Boot: работа с NoSQL технологиями, Redis
- Spring Boot: работа с NoSQL, MongoDB
- Spring Boot: работа с NoSQL, Couchbase
Комментарии
Отправить комментарий