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.
Читайте также:
- Spring Boot: кэширование
- Spring Boot: поддерживаемые поставщики кэша
- Spring Boot: работа с NoSQL, Couchbase
Комментарии
Отправить комментарий