SpringBoot 緩存提供程序

SpringBoot框架允許集成各種 緩存提供程序,例如 EhCache、Redis、Hazelcast、Infinispan、Caffeine,等。緩存提供程序允許開發(fā)人員在應用程序中透明且顯式地配置緩存。我們應該使用緩存,因為它減少了執(zhí)行次數并提高了應用程序的性能。

在Spring中引導,緩存抽象未提供緩存的實際空間。這取決于 org.springframework.cache.Cache org.springframework.cache.CacheManager 接口所發(fā)生的抽象。

緩存自動配置

Spring Boot Framework通過自動配置支持簡化了緩存的實現。它在類路徑中搜索庫和配置文件,并在應用程序啟動時初始化所需的依賴項Bean。緩存的自動配置包括以下步驟:

在配置文件中添加注解 @EnableCaching 。 在類路徑中添加所需的緩存庫 在類路徑的根目錄中,為緩存提供程序添加配置文件

例如,如果我們要在應用程序中實現 EhCache ,首先我們在配置文件中啟用緩存。

@SpringBootApplication
@EnableCaching
public class Employee
{
@Bean
public CacheManager cacheManager()
{
//some code
}
}

pom.xml 文件中添加 EhCache 依賴性。它將所需的庫添加到類路徑中。

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

最后,為高速緩存提供程序配置文件。在這里,我們正在使用EhCache,因此需要在類路徑的根目錄下配置 ehcache.xml 文件。

當我們沒有定義 CacheManager 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 設置特定的緩存提供程序。如果要禁用緩存,則在特定環(huán)境中使用它。

spring.cache.type=none

Spring Boot Framework提供了一個啟動程序依賴項,該依賴項在應用程序中添加了基本的緩存依賴項。默認情況下,啟動程序緩存依賴項提供 spring-context-support 依賴項。

注意: 如果我們手動添加緩存依賴項,則必須在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 接口進一步對其進行自定義。

在follwoig示例中,我們設置了一個傳遞標記主映射的空值。

@Bean
public CacheManagerCustomizer<ConcurrentMapCacheManager> cacheManagerCustomizer() 
{
return new CacheManagerCustomizer<ConcurrentMapCacheManager>() 
{
@Override
public void customize(ConcurrentMapCacheManager cacheManager) 
{
cacheManager.setAllowNullValues(false);
}
};
}

上面的bean需要一個自動配置的 ConcurrentMapCacheManager 。如果ConcurrentMapCacheManager沒有自動配置,則定制器將不會以任何方式調用。我們可以使用任意數量的定制程序,并使用注解 @Order @Ordered。

Generic緩存

如果spring-context-support定義了至少一個 org.springframework.cache.Cache.Cache bean,它將使用通用緩存。 CacheManager 捆綁并配置了所有bean。

JCache

JCache是由 javax.cache.spi.CahingProvider。。它位于類路徑JSR 107中。spring-boot-starter-cache提供了 JCacheCacheManager。我們也可以添加其他任何緩存庫。

注意: 如果緩存庫同時提供本機實現和JSR支持,則Spring Boot首選JSR支持。

EhCache 2.x

EHCache是基于Java的開放源代碼,被廣泛使用。為了使用EhCache,我們應該使用以下依賴項。

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

有兩種方法配置EhCache:

首先,通過配置Java POJO文件(其中所有配置參數均通過EhCache API配置)。 其次,通過配置XML文件,我們根據提供的架構定義在其中配置EhCache。

EhCache使用了一個名為 ehcache.xml的文件。 如果應用程序在類路徑上找到了文件,則為spring-boot-starter-cache提供的 EhCacheCacheManager 。我們可以使用以下屬性來配置 XML 文件:

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

Hazelcast

當我們在應用程序中啟用緩存時,Spring Boot會自動將 HazelcastInstance 包裝在CacheManager中。它在節(jié)點之間平均分配數據。我們可以使用以下屬性來配置Hazelcast。

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

如果未設置該屬性,Spring Boot會嘗試在類路徑中找到 hazelcast.xml (Hazelcast配置)文件。

Infinispan

Infinispan是嵌入式 Java 庫。它用作 緩存數據網格。它以 鍵值形式存儲數據。它可以輕松地與JCache, JPA Quarkus, Spring 等。

它沒有默認文件位置,因此我們應該明確指定它。如果未明確指定infinispan,則會使用默認的引導程序。

spring.cache.infinispan.config=infinispan.xml

Couchbase

當我們實現 couchbase-spring-cache 并配置了Couchbase時,會自動配置 CouchebaseCacheManager 。與緩存有關的所有操作都在 Bucket 中執(zhí)行。它允許我們通過設置屬性 spring.cache.cache-name來創(chuàng)建其他緩存(如果需要)。

自定義程序允許我們創(chuàng)建其他存儲桶,其中可以創(chuàng)建另一個緩存。

讓我們通過一個示例來了解上述概念。

假設我們需要三個名為 cacheA cacheB, cacheC 。 cacheA和cacheB位于主存儲桶(即自動配置的存儲桶)上。 cacheC在另一個存儲桶上,該存儲桶可以存活幾秒鐘,例如4秒鐘。因此,我們可以通過指定屬性來創(chuàng)建cacheA和cacheB,如下所示:

spring.cache.cache-names=cacheA, cacheB

Redis

當我們配置 Redis 時,將自動配置 RedisCacheManager 。它還允許我們使用屬性 spring.cache.cache-names 創(chuàng)建其他緩存。可以使用屬性 spring.cache.redis。* 實現默認配置。

我們可以使用 RedisCacheConfiguration 完全控制默認配置。 strong>豆。

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

以上屬性配置了兩個緩存,分別稱為cacheA和cacheB,它們的壽命為10分鐘。

Caffeine

咖啡因是基于Java的緩存庫。它還提供了一個內存中緩存。如果spring-boot-starter-cache依賴項在類路徑中找到了Caffeine,它會自動配置 CaffeineCacheManger 。如果要在應用程序中使用咖啡因,則需要添加以下依賴項:

<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

上面的配置創(chuàng)建兩個名為cache1和cache2的緩存。緩存的最大大小為 500 ,最長生存時間為 6 秒。

Simple

這是默認實現。如果未指定緩存提供程序。如果Spring Boot在類路徑中找不到任何緩存提供程序,則會將 ConcurrentHashMap 配置為緩存存儲。

例如,如果我們需要兩個緩存,請使用設置它們的名稱。以下屬性:

spring.cache.cache-names=cache1,cache2

None

當我們使用注解@EnableCaching啟用緩存時,應用程序需要合適的配置。當我們要在特定環(huán)境中 禁用緩存時使用。我們使用屬性 spring.cache.type 禁用緩存。

spring.cache.type=none

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清