Сообщения

Показаны сообщения с ярлыком "Spring Boot кэширование"

Spring Boot: поставщики кэша, Simple, отключенный кэш

Изображение
Simple (Простой) Если ни один из других поставщиков не может быть найден, настраивается простая реализация, использующая ConcurrentHashMap в качестве хранилища кэша. Это значение по умолчанию, если в вашем приложении нет библиотеки кэширования. По умолчанию кэши создаются по мере необходимости, но вы можете ограничить список доступных кэшей, установив свойство cache-names. Например, если вам нужны только кэши cache1 и cache2, установите свойство cache-names следующим образом: spring.cache.cache-names=cache1,cache2 Если вы сделаете это, и ваше приложение использует кэш, которого нет в списке, то оно завершится с ошибкой во время выполнения, когда кэш необходим, но не при запуске. Это похоже на поведение «настоящих» поставщиков кэша, если вы используете необъявленный кэш. Выключенный кэш Когда в вашей конфигурации присутствует @EnableCaching, также ожидается подходящая конфигурация кэша. Если вам необходимо полностью отключить кэширование в определенных средах, принудительно ус...

Spring Boot: поставщики кэша, Caffeine

Изображение
Caffeine - это переписанный на Java 8 кэш Guava, которая заменяет поддержку Guava. Если Caffeine присутствует, CaffeineCacheManager (предоставленный стартером spring-boot-starter-cache) автоматически конфигурируется. Кэши можно создать при запуске, установив свойство spring.cache.cache-names, и их можно настроить одним из следующих способов (в указанном порядке): Спецификация кэша, определенная в spring.cache.caffeine.spec Определен компонент com.github.benmanes.caffeine.cache.CaffeineSpec Определен bean-компонент com.github.benmanes.caffeine.cache.Caffeine Например, следующая конфигурация создает кэши cache1 и cache2 с максимальным размером 500 и временем жизни 10 минут spring.cache.cache-names=cache1,cache2 spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=600s Если определен bean-компонент com.github.benmanes.caffeine.cache.CacheLoader, он автоматически связывается с CaffeineCacheManager. Поскольку CacheLoader будет связан со всеми кэшами, управляемыми менедж...

Spring Boot: поставщики кэша, Redis

Изображение
Если Redis доступен и настроен, RedisCacheManager настраивается автоматически. Можно создать дополнительные кэши при запуске, установив свойство spring.cache.cache-names, а настройки кэша по умолчанию можно настроить с помощью свойств spring.cache.redis.*. Например, следующая конфигурация создает кэши cache1 и cache2 со временем жизни 10 минут: spring.cache.cache-names=cache1,cache2 spring.cache.redis.time-to-live=600000 По умолчанию добавляется префикс ключа, поэтому, если два отдельных кэша используют один и тот же ключ, Redis не имеет перекрывающихся ключей и не может возвращать недопустимые значения. Настоятельно рекомендуется оставить этот параметр включенным, если вы создаете свой собственный RedisCacheManager. Вы можете получить полный контроль над конфигурацией по умолчанию, добавив свой RedisCacheConfiguration @Bean. Это может быть полезно, если вы ищете настройку стратегии сериализации по умолчанию. Если вам нужно больше контроля над конфигурацией, рассмотрите возмож...

Spring Boot: поставщики кэша, Couchbase

Изображение
Если Java-клиент Couchbase и реализация couchbase-spring-cache доступны и Couchbase настроен, CouchbaseCacheManager настраивается автоматически. Также можно создать дополнительные кэши при запуске, установив свойство spring.cache.cache-names. Эти кэши работают на Bucket, который был автоматически настроен. Вы также можете создать дополнительные кэши в другом Bucket с помощью настройщика. Предположим, вам нужно два кэша (cache1 и cache2) в "main" («основном») Bucket и один (cache3) кэш с настраиваемым временем жизни 2 секунды в “another” («другом») Bucket. Вы можете создать первые два кэша с помощью конфигурации следующим образом: spring.cache.cache-names=cache1,cache2 Затем вы можете определить класс @Configuration для настройки дополнительного Bucket и кэша cache3 следующим образом: @Configuration(proxyBeanMethods = false) public class CouchbaseCacheConfiguration { private final Cluster cluster; public CouchbaseCacheConfiguration(Cluster cluster) { ...

Spring Boot: поставщики кэша, Generic, JCache, Infinispan

Изображение
Generic (Общий) Generic кэширование используется, если контекст определяет хотя бы один bean-компонент org.springframework.cache.Cache. Создается CacheManager, охватывающий все компоненты этого типа. JCache (JSR-107) JCache загружается при наличии javax.cache.spi.CachingProvider на пути к классам (то есть на пути к классам существует библиотека кэширования, совместимая с JSR-107), а JCacheCacheManager предоставляется spring-boot-starter-cache стартер. Доступны различные совместимые библиотеки, а Spring Boot обеспечивает управление зависимостями для Ehcache 3, Hazelcast и Infinispan. Любая другая совместимая библиотека также может быть добавлена. Может случиться так, что присутствует более одного поставщика, и в этом случае поставщик должен быть указан явно. Даже если стандарт JSR-107 не обеспечивает стандартизированный способ определения местоположения файла конфигурации, Spring Boot делает все возможное, чтобы приспособить кэш с подробностями реализации, как показано в следующем п...

Spring Boot: поддерживаемые поставщики кэша

Изображение
Абстракция кэша не обеспечивает фактическое хранилище и использует абстракцию, материализованную интерфейсами org.springframework.cache.Cache и org.springframework.cache.CacheManager. Если вы не определили bean-компонент типа CacheManager или CacheResolver с именем cacheResolver, Spring Boot пытается обнаружить следующих поставщиков (в указанном порядке): Generic (Общий) JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, и другие) EhCache 2.x Hazelcast Infinispan Couchbase Redis Caffeine Simple (простой) Также возможно принудительно установить определенный поставщик кэша, установив свойство spring.cache.type. Используйте это свойство, если вам нужно полностью отключить кэширование в определенной среде (например, в тестах). Используйте spring-boot-starter-cache стартер для быстрого добавления основных зависимостей кэширования. Стартер приносит spring-context-support. Если вы добавляете зависимости вручную, вы должны включить поддержку spring-context-support, чтобы использ...

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 абстракция ищет в кэше ...