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, чтобы использовать поддержку JCache, EhCache 2.x или Caffeine.
Если CacheManager автоматически конфигурируется Spring Boot, вы можете дополнительно настроить его конфигурацию до полной инициализации, предоставив компонент, реализующий интерфейс CacheManagerCustomizer. В следующем примере устанавливается флаг, указывающий, что нулевые значения должны быть переданы базовой карте:
@Bean
public CacheManagerCustomizer<ConcurrentMapCacheManager> cacheManagerCustomizer() {
return new CacheManagerCustomizer<ConcurrentMapCacheManager>() {
@Override
public void customize(ConcurrentMapCacheManager cacheManager) {
cacheManager.setAllowNullValues(false);
}
};
}
В предыдущем примере ожидается автоматически настроенный ConcurrentMapCacheManager. Если это не так (либо вы указали свою собственную конфигурацию, либо другой поставщик кэша был автоматически настроен), настройщик (customizer) вообще не вызывается. У вас может быть столько настройщиков, сколько вы хотите, и вы также можете упорядочить их, используя @Order или Ordered.
Читайте также:
- Spring Boot: кэширование
- Spring Boot: работа с NoSQL технологиями, Redis
- Spring Boot: работа с NoSQL, Couchbase
Комментарии
Отправить комментарий