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.

Также возможно прозрачное обновление или удаление данных из кэша.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки