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

SpringBootキャッシュプロバイダ

SpringBootフレームワークは、さまざまな キャッシュプロバイダ例えば EhCache、Redis、Hazelcast、Infinispan、Caffeine、など。キャッシュプロバイダは、開発者がアプリケーションでキャッシュを透明かつ明示的に設定できるようにします。キャッシュを使用すべき理由は、実行回数を減らし、アプリケーションのパフォーマンスを向上させるからです。

Springで初期化すると、キャッシュの抽象は実際のキャッシュスペースを提供しません。それは以下のように依存します。 org.springframework.cache.Cache または org.springframework.cache.CacheManager インターフェースが発生する抽象。

キャッシュ自動設定

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 特定のキャッシュプロバイダを設定します。キャッシュを無効にする場合は、特定の環境で使用します。

spring.cache.type=none

Spring Boot Frameworkは、アプリケーションに基本的なキャッシュ依存関係を追加するスタートアップ依存関係を提供しています。デフォルトでは、スタートアップ依存関係のキャッシュ依存関係は spring-context-support 依存関係を含めなければなりません。

注意: もし手動でキャッシュ依存関係を追加する場合、pom.xmlファイルにはspring-context-サポート依存関係があり、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 または @Ordered。

ジェネリックキャッシュ

もしspring-context-supportは少なくとも1つの org.springframework.cache.Cache.Cache beanを使用して、一般的なキャッシュを使用します。 CacheManager にバンドルされ、すべてのbeanが設定されています。

JCache

JCacheは javax.cache.spi.CahingProvider。。それはJSR 107中で、spring-boot-starter-キャッシュが提供されています。 JCacheCacheManager。他のキャッシュライブラリも追加できます。

注意: キャッシュライブラリがネイティブ実装とJSRサポートの両方を提供している場合、Spring BootはJSRサポートを選択します。

EhCache 2.x

EHCacheはJavaベースのオープンソースで、広く使用されています。EhCacheを使用するには、以下の依存関係を使用する必要があります。

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

EhCacheを構成するには、以下の2つの方法があります:

まず、すべての設定パラメータがEhCache APIで設定されたJava POJOファイルを構成します。 次に、提供されたアーキテクチャに基づいて、XMLファイルを構成するために設定ファイルを配置します。

EhCacheは、 ehcache.xmlのファイルです。 アプリケーションがクラスパス上でファイルを見つけた場合、spring-boot-starter-キャッシュが提供されています。 EhCacheCacheManager を使用します。以下の属性を使用してXMLファイルを構成できます。

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

Hazelcast

アプリケーション内でキャッシュを有効にすると、Spring Bootは自動的に以下を HazelcastInstance CacheManagerに包装されています。データはノード間で平均的に分配されます。以下の属性を使用して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を実装すると、自動的に設定されます couchbase-spring-cache Couchbaseを設定すると、自動的に設定されます CouchebaseCacheManager すべてのキャッシュに関連する操作は を使用します。 Bucket spring.cache.cache-中で実行されます。属性

nameを使用して他のキャッシュを作成します(必要に応じて)。

カスタムプログラムは、他のバケツを作成し、そこに別のキャッシュを作成できるように許可しています。

名前で他のキャッシュを作成する必要がある場合、以下の例を参照してください。 例えば、3つの名前が cacheA cacheB、 cacheC4cacheAとcacheBはメインのストレージバケツ(自動的に設定されたバケツ)にあります。cacheCは別のバケツにあり、例えば数秒生存するバケツです。

spring.cache.cache-names=cacheA, cacheB

Redisを設定すると、自動的に設定されます

秒です。したがって、属性を指定することで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という名前の2つのキャッシュを設定し、寿命を指定しています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

の上記の設定により、cacheと名前がcacheの2つのキャッシュが作成されます1とcache2のキャッシュです。キャッシュの最大サイズは 500 、最長生存時間は 6 秒。

Simple

これはデフォルトの実装です。キャッシュプロバイダーが指定されていない場合や、Spring Bootがクラスパスでキャッシュプロバイダーを見つけられない場合 ConcurrentHashMap キャッシュストレージとして設定します。

例えば、2つのキャッシュが必要な場合は、キャッシュの名前を設定します。以下の属性:

spring.cache.cache-names=cache1,cache2

None

注解@EnableCachingを使用してキャッシュを有効にするとき、アプリケーションには適切な設定が必要です。特定の環境で使用する場合 無効キャッシュを使用する場合、属性を使用します。私たちは属性を使用します。 spring.cache.type キャッシュを無効にします。

spring.cache.type=none