English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 依赖项。
<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。
如果spring-context-support定义了至少一个 org.springframework.cache.Cache.Cache bean,它将使用通用缓存。 CacheManager 绑定并配置了所有bean。
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.
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
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 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-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 при настройке, будет автоматически настроен 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 — это библиотека кэширования на 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 сек.
Это default implementation. Если не указан провайдер кэша. Если Spring Boot не находит ни одного провайдера кэша в классовом пути, то ConcurrentHashMap Настройка кэша хранения.
Например, если нам нужно два кэша, мы используем их имена. Следующие свойства:
spring.cache.cache-names=cache1,cache2
Когда мы используем аннотацию @EnableCaching для включения кэширования, приложению необходимы соответствующие настройки. Когда мы хотим использовать ОтключитьИспользование кэширования. Мы используем свойства spring.cache.type Отключить кэширование.
spring.cache.type=none