English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 依存関係を含めなければなりません。
<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は javax.cache.spi.CahingProvider。。それはJSR 107中で、spring-boot-starter-キャッシュが提供されています。 JCacheCacheManager。他のキャッシュライブラリも追加できます。
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
アプリケーション内でキャッシュを有効にすると、Spring Bootは自動的に以下を HazelcastInstance CacheManagerに包装されています。データはノード間で平均的に分配されます。以下の属性を使用してHazelcastを構成できます。
spring.hazelcast.config=classpath:config/demo-hazelcast.xml
この属性が設定されていない場合、Spring Bootはクラスパス内でそれを見つけようとします。 hazelcast.xml (Hazelcast設定)ファイルです。
Infinispanは組み込みのJavaライブラリです。それが以下の用途として使用されます。 キャッシュまたは データグリッド。それでは、 キー値形式を保存するデータ。JCache、JPA Quarkus、Springなどと簡単に連携できます。
デフォルトのファイル位置はありませんので、明示的に指定する必要があります。infinispanが明示的に指定されない場合、デフォルトの起動プログラムが使用されます。
spring.cache.infinispan.config=infinispan.xml
Couchbaseを実装すると、自動的に設定されます couchbase-spring-cache Couchbaseを設定すると、自動的に設定されます CouchebaseCacheManager すべてのキャッシュに関連する操作は を使用します。 Bucket spring.cache.cache-中で実行されます。属性
nameを使用して他のキャッシュを作成します(必要に応じて)。
カスタムプログラムは、他のバケツを作成し、そこに別のキャッシュを作成できるように許可しています。
名前で他のキャッシュを作成する必要がある場合、以下の例を参照してください。 例えば、3つの名前が cacheA 、と cacheB、 cacheC4cacheAとcacheBはメインのストレージバケツ(自動的に設定されたバケツ)にあります。cacheCは別のバケツにあり、例えば数秒生存するバケツです。
spring.cache.cache-names=cacheA, cacheB
秒です。したがって、属性を指定することで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分。
カフェインは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 秒。
これはデフォルトの実装です。キャッシュプロバイダーが指定されていない場合や、Spring Bootがクラスパスでキャッシュプロバイダーを見つけられない場合 ConcurrentHashMap キャッシュストレージとして設定します。
例えば、2つのキャッシュが必要な場合は、キャッシュの名前を設定します。以下の属性:
spring.cache.cache-names=cache1,cache2
注解@EnableCachingを使用してキャッシュを有効にするとき、アプリケーションには適切な設定が必要です。特定の環境で使用する場合 無効キャッシュを使用する場合、属性を使用します。私たちは属性を使用します。 spring.cache.type キャッシュを無効にします。
spring.cache.type=none