English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot кэширование предоставляет программы

SpringBoot фреймворк позволяет интегрировать различные поставщики кэшанапример EhCache, Redis, Hazelcast, Infinispan, Caffeine,и т.д. Поставщики кэша позволяют разработчикамtransparentно и явно конфигурировать кэш в приложении. Мы должны использовать кэш, так как это уменьшает количество выполнения и улучшает производительность приложения.

В Spring boot, абстракция кэша не предоставляет реального пространства кэша. Это зависит от org.springframework.cache.Cache hoặc org.springframework.cache.CacheManager абстракция интерфейса.

автоматическая конфигурация кэша

Spring Boot Framework с помощью автоматической конфигурации упрощает реализацию кэша. Он ищет библиотеки и конфигурационные файлы в классовом пути и инициализирует необходимые зависимости Bean при запуске приложения. Автоматическая конфигурация кэша включает следующие шаги:

добавить аннотацию в конфигурационном файле @EnableCaching . добавить необходимые в классовом путибиблиотека кэша. добавить поставщика кэша в корень классового путиконфигурация файла.

например, если мы хотим реализовать в приложении EhCache сначала мы включаем кэш в конфигурационном файле.

@SpringBootApplication
@EnableCaching
public class Employee

@Bean
public CacheManager cacheManager()

//некий код

в pom.xml добавить в файл EhCache зависимости. Она добавляет необходимые библиотеки в классовый путь.

<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>

В конце концов, конфигурация файла поставщика кэша. Здесь мы используем EhCache, поэтому необходимо настроить ehcache.xml файл.

Когда мы не определяем CacheManager hoặc CacheResolver Spring Boot Framework будет пытаться обнаружить следующие поставщики кэша:

Generic JCache EhCache Hazelcast Infinispan Couchbase Redis Caffeine Simple

Если Spring Boot находит несколько поставщиков кэша в классовом пути, в этом случае我们必须 в application.properties В файле явно указан поставщик кэша.

spring.cache.ehcache.provider=net.sf.ehcache.CacheManager
spring.cache.ehcache.config=classpath:config/another-config.xml

Мы можем использовать атрибут spring.cache.type Установите конкретный поставщик кэша. Если необходимо отключить кэш, используйте его в определенной среде.

spring.cache.type=none

Spring Boot Framework提供了一个启动程序依赖项,该依赖项在应用程序中添加了基本的缓存依赖项。默认情况下,启动程序缓存依赖项提供 spring-context-support 依赖项。

Lưu ý: 如果我们手动添加缓存依赖项,则必须在pom.xml文件中包含spring-context-support依赖项。因为,它提供了对Jcache,EhCache和Caffiene的支持。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>

Spring Boot Framework自动配置CacheManager,可以通过实现 CacheManagerCustomizer 接口进一步对其进行自定义。

在以下示例中,我们设置了一个传递标记主映射的空值。

@Bean
public CacheManagerCustomizer<ConcurrentMapCacheManager> cacheManagerCustomizer() 

return new CacheManagerCustomizer<ConcurrentMapCacheManager>() 

@Override
public void customize(ConcurrentMapCacheManager cacheManager) 

cacheManager.setAllowNullValues(false);


上面的bean需要一个自动配置的 ConcurrentMapCacheManager 。如果ConcurrentMapCacheManager没有自动配置,则定制器将不会以任何方式调用。我们可以使用任意数量的定制程序,并使用注解 @Order hoặc @Ordered。

Generic缓存

如果spring-context-support定义了至少一个 org.springframework.cache.Cache.Cache bean,它将使用通用缓存。 CacheManager 绑定并配置了所有bean。

JCache

JCache được javax.cache.spi.CahingProvider.Nó nằm trong JSR 107 trên đường dẫn lớp. spring-boot-starter-cache cung cấp JCacheCacheManager.Chúng ta cũng có thể thêm bất kỳ thư viện cache nào khác.

Lưu ý: Nếu thư viện cache cung cấp cả bản thực thi cục bộ và hỗ trợ JSR, Spring Boot sẽ ưu tiên hỗ trợ JSR.

EhCache 2.x

EHCache là mã nguồn mở dựa trên Java, được sử dụng rộng rãi. Để sử dụng EhCache, chúng ta nên sử dụng các phụ thuộc sau.

<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>

Có hai cách cấu hình EhCache:

Thứ nhất, thông qua việc cấu hình tệp POJO Java (ở đó tất cả các tham số cấu hình đều được cấu hình thông qua API EhCache). Thứ hai, thông qua việc cấu hình tệp XML, chúng ta cấu hình EhCache dựa trên cấu trúc được cung cấp.

EhCache sử dụng một tên ehcache.xml. Nếu ứng dụng tìm thấy tệp trên đường dẫn lớp, nó sẽ là tệp .xml được cung cấp bởi spring-boot-starter-cache. EhCacheCacheManager Chúng ta có thể sử dụng các thuộc tính sau để cấu hình tệp XML:

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

Hazelcast

Khi chúng ta bật cache trong ứng dụng, Spring Boot sẽ tự động chuyển HazelcastInstance bọc trong CacheManager. Nó phân phối dữ liệu giữa các nút một cách trung bình. Chúng ta có thể sử dụng các thuộc tính sau để cấu hình Hazelcast.

spring.hazelcast.config=classpath:config/demo-hazelcast.xml

Nếu không thiết lập thuộc tính này, Spring Boot sẽ thử tìm trong đường dẫn lớp. hazelcast.xml (tệp cấu hình Hazelcast) file.

Infinispan

Infinispan là thư viện Java gắn kết. Nó được sử dụng như cacheshoặc mạng dữ liệuNó với giá trị khóalưu trữ dữ liệu dưới dạng. Nó có thể dễ dàng tương thích với JCache, JPA Quarkus, Spring và vân vân.

У него нет mặc định tệp vị trí, vì vậy chúng ta nên chỉ định rõ ràng nó. Nếu không chỉ định rõ ràng infinispan, sẽ sử dụng chương trình khởi động mặc định.

spring.cache.infinispan.config=infinispan.xml

Couchbase

когда мы реализуем couchbase-spring-cache и настроен Couchbase, будет автоматически настроен CouchebaseCacheManager . Все операции, связанные с кэшем, выполняются в Bucket выполнение. Это позволяет нам через настройки свойств spring.cache.cache-name для создания других кэшей (если необходимо).

Персонализированные программы позволяют создавать другие контейнеры, в которых можно создавать другой кэш.

Давайте рассмотрим пример для понимания вышеуказанных концепций.

Предположим, что нам нужны триcache с именами cacheA , cacheB,и cacheC . cacheA и cacheB расположены на главном контейнере (т.е. автоматически настроенном контейнере). cacheC находится на другом контейнере, который может существовать несколько секунд, например, 4 секунды. Таким образом, мы можем создать cacheA и cacheB, specifyng свойства, как показано ниже:

spring.cache.cache-names=cacheA, cacheB

Redis

когда мы настраиваем Redis при настройке, будет автоматически настроен RedisCacheManager . Это также позволяет нам использовать свойства spring.cache.cache-names создать другие кэши. можно использовать свойства spring.cache.redis.* для реализации стандартной конфигурации.

Мы можем использовать RedisCacheConfiguration Полное управление по умолчанию. сильн.

spring.cache.cache-names=cacheA, cacheB
spring.cache.redis.time-to-live=100000

Эти свойства конфигурируют два кэша, соответственно называемые cacheA и cacheB, срок их жизни составляет 10 минут.

Caffeine

Caffeine — это библиотека кэширования на Java, которая также предоставляет кэш в памяти. Если зависимость spring-boot-starter-cache найдет Caffeine в классовом пути, он будет автоматически настроен CaffeineCacheManger Чтобы использовать Caffeine в приложении, нужно добавить следующие зависимости:

<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.7.0</version>
</dependency>

Через кэширование с кофеином, мы можем использовать свойства spring.cache.caffeine.spec определяетРазмериСрок жизни. Например:

spring.cache.cache-names=cacheA,cacheB
spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=600s

Приведенная выше конфигурация создает два кэша с именами cache1 и cache2. Максимальный размер кэша 500 и максимальным сроком хранения 6 сек.

Simple

Это default implementation. Если не указан провайдер кэша. Если Spring Boot не находит ни одного провайдера кэша в классовом пути, то ConcurrentHashMap Настройка кэша хранения.

Например, если нам нужно два кэша, мы используем их имена. Следующие свойства:

spring.cache.cache-names=cache1,cache2

None

Когда мы используем аннотацию @EnableCaching для включения кэширования, приложению необходимы соответствующие настройки. Когда мы хотим использовать ОтключитьИспользование кэширования. Мы используем свойства spring.cache.type Отключить кэширование.

spring.cache.type=none