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.cache.jcache.provider=com.acme.MyCachingProvider
spring.cache.jcache.config=classpath:acme.xml

Когда библиотека кэша предлагает как собственную реализацию, так и поддержку JSR-107, Spring Boot предпочитает поддержку JSR-107, поэтому те же функции доступны, если вы переключаетесь на другую реализацию JSR-107.

Spring Boot имеет общую поддержку Hazelcast. Если доступен один объект HazelcastInstance, он автоматически повторно используется и для CacheManager, если не указано свойство spring.cache.jcache.config.

Есть два способа настроить базовый javax.cache.cacheManager:

  • Кэши можно создать при запуске, установив свойство spring.cache.cache-names. Если пользовательский компонент javax.cache.configuration.Configuration определен, он используется для их настройки.
  • bean-компоненты org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer вызываются со ссылкой на CacheManager для полной настройки.

Если стандартный bean-компонент javax.cache.CacheManager определен, он автоматически включается в реализацию org.springframework.cache.CacheManager, которую ожидает абстракция. Никакой дополнительной настройки к нему не применяется.

EhCache 2.x

EhCache 2.x используется, если файл с именем ehcache.xml находится в корне пути к классам. Если EhCache 2.x найден, EhCacheCacheManager, предоставленный стартером spring-boot-starter-cache, используется для начальной загрузки менеджера кэша. Также может быть предоставлен альтернативный файл конфигурации, как показано в следующем примере:

spring.cache.ehcache.config=classpath:config/another-config.xml

Hazelcast

Spring Boot имеет общую поддержку Hazelcast. Если HazelcastInstance был автоматически настроен, он автоматически включается в CacheManager.

Infinispan

Infinispan не имеет местоположения файла конфигурации по умолчанию, поэтому он должен быть указан явно. В противном случае используется загрузчик по умолчанию.

spring.cache.infinispan.config=infinispan.xml

Кэши можно создать при запуске, установив свойство spring.cache.cache-names. Если пользовательский компонент ConfigurationBuilder определен, он используется для настройки кэшей.

Поддержка Infinispan в Spring Boot ограничена встроенным режимом и является довольно простой. Если вы хотите больше возможностей, вам следует использовать официальный стартер Infinispan Spring Boot.


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


Комментарии

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

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

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

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