クラス CaffeineCacheManager
- 実装されたすべてのインターフェース:
CacheManager
getCache(java.lang.String)
リクエストごとに CaffeineCache
インスタンスを遅延ビルドする CacheManager
実装。また、キャッシュ名のセットが setCacheNames(java.util.Collection<java.lang.String>)
を介して事前に定義されている「静的」モードもサポートしています。実行時に追加のキャッシュ領域を動的に作成することはありません。 基礎となるキャッシュの構成は、Caffeine
ビルダーまたは CaffeineSpec
を介して微調整でき、setCaffeine(com.github.benmanes.caffeine.cache.Caffeine<java.lang.Object, java.lang.Object>)
/setCaffeineSpec(com.github.benmanes.caffeine.cache.CaffeineSpec)
を介してこの CacheManager に渡されます。CaffeineSpec
-compliant 式の値は、"cacheSpecification"
Bean プロパティを介して適用することもできます。
setAsyncCacheMode(boolean)
経由で構成されている場合、早期にキャッシュミスが検出された場合、Caffeine の AsyncCache
を通じて非同期 Cache.retrieve(Object)
および Cache.retrieve(Object, Supplier)
操作をサポートします。
Spring Framework 6.1 以降では Caffeine 3.0 以降が必要です。
- 導入:
- 4.3
- 作成者:
- Ben Manes, Juergen Hoeller, Stephane Nicoll, Sam Brannen, Brian Clozel
- 関連事項:
コンストラクターのサマリー
コンストラクター説明動的な CaffeineCacheManager を構築し、リクエストされているキャッシュインスタンスを遅延作成します。CaffeineCacheManager
(StringSE... cacheNames) 静的 CaffeineCacheManager を構築し、指定されたキャッシュ名のみのキャッシュを管理します。メソッドのサマリー
修飾子と型メソッド説明protected Cache
adaptCaffeineCache
(StringSE name, com.github.benmanes.caffeine.cache.AsyncCache<ObjectSE, ObjectSE> cache) 指定された新しい Caffeine AsyncCache インスタンスを、指定されたキャッシュ名の Spring のCache
抽象化に適合させます。protected Cache
adaptCaffeineCache
(StringSE name, com.github.benmanes.caffeine.cache.Cache<ObjectSE, ObjectSE> cache) 指定された新しいネイティブ Caffeine キャッシュインスタンスを、指定されたキャッシュ名の Spring のCache
抽象化に適合させます。このキャッシュマネージャーで指定された共通 Caffeine 構成を使用して、指定されたキャッシュ名の共通 Caffeine AsyncCache インスタンスを構築します。protected Cache
createCaffeineCache
(StringSE name) このキャッシュマネージャーで指定された共通の Caffeine 構成を使用して、指定されたキャッシュ名の共通のCaffeineCache
インスタンスを構築します。このキャッシュマネージャーで指定された共通の Caffeine 構成を使用して、指定されたキャッシュ名の共通の Caffeine キャッシュインスタンスを構築します。指定された名前に関連付けられたキャッシュを取得します。このマネージャーが知っているキャッシュ名のコレクションを取得します。boolean
このキャッシュマネージャーが、すべてのキャッシュのnull
値を受け入れて変換するかどうかを返します。void
registerCustomCache
(StringSE name, com.github.benmanes.caffeine.cache.AsyncCache<ObjectSE, ObjectSE> cache) 指定された Caffeine AsyncCache インスタンスをこのキャッシュマネージャーに登録し、getCache(java.lang.String)
を介して公開できるように Spring のキャッシュ API に適応させます。void
registerCustomCache
(StringSE name, com.github.benmanes.caffeine.cache.Cache<ObjectSE, ObjectSE> cache) 指定されたネイティブ Caffeine キャッシュインスタンスをこのキャッシュマネージャーに登録し、Spring のキャッシュ API に適応させて、getCache(java.lang.String)
を介して公開します。void
removeCache
(StringSE name) 指定されたキャッシュをこのキャッシュマネージャーから削除します。これは、カスタムキャッシュと実行時に動的に登録されたキャッシュに適用されます。void
setAllowNullValues
(boolean allowNullValues) このキャッシュマネージャーのすべてのキャッシュのnull
値を受け入れて変換するかどうかを指定します。void
setAsyncCacheLoader
(com.github.benmanes.caffeine.cache.AsyncCacheLoader<ObjectSE, ObjectSE> cacheLoader) Caffeine AsyncCacheLoader を設定して、個々のCaffeineCache
インスタンスを作成し、LoadingCache に変換します。void
setAsyncCacheMode
(boolean asyncCacheMode) このキャッシュマネージャーが構築する共通のキャッシュ型を非同期に設定します。void
setCacheLoader
(com.github.benmanes.caffeine.cache.CacheLoader<ObjectSE, ObjectSE> cacheLoader) Caffeine CacheLoader を設定して、個々のCaffeineCache
インスタンスを作成し、LoadingCache に変換します。void
setCacheNames
(CollectionSE<StringSE> cacheNames) この CacheManager の「静的」モードのキャッシュ名のセットを指定します。void
setCacheSpecification
(StringSE cacheSpecification) 個々のCaffeineCache
インスタンスを構築するために使用する Caffeine キャッシュ仕様文字列を設定します。void
setCaffeine
(com.github.benmanes.caffeine.cache.Caffeine<ObjectSE, ObjectSE> caffeine) Caffeine を設定して、個々のCaffeineCache
インスタンスを作成します。void
setCaffeineSpec
(com.github.benmanes.caffeine.cache.CaffeineSpec caffeineSpec) 個々のCaffeineCache
インスタンスの構築に使用するCaffeineSpec
を設定します。
コンストラクターの詳細
CaffeineCacheManager
public CaffeineCacheManager()動的な CaffeineCacheManager を構築し、リクエストされているキャッシュインスタンスを遅延作成します。CaffeineCacheManager
静的 CaffeineCacheManager を構築し、指定されたキャッシュ名のみのキャッシュを管理します。
メソッドの詳細
setCacheNames
この CacheManager の「静的」モードのキャッシュ名のセットを指定します。キャッシュの数とその名前は、このメソッドの呼び出し後に修正され、実行時にさらにキャッシュ領域が作成されることはありません。
null
コレクション引数でこれを呼び出すと、モードが「動的」にリセットされ、キャッシュをさらに作成できるようになります。setCaffeine
Caffeine を設定して、個々のCaffeineCache
インスタンスを作成します。- 関連事項:
createNativeCaffeineCache(java.lang.String)
Caffeine.build()
setCaffeineSpec
public void setCaffeineSpec(com.github.benmanes.caffeine.cache.CaffeineSpec caffeineSpec) 個々のCaffeineCache
インスタンスの構築に使用するCaffeineSpec
を設定します。- 関連事項:
createNativeCaffeineCache(java.lang.String)
Caffeine.from(CaffeineSpec)
setCacheSpecification
個々のCaffeineCache
インスタンスを構築するために使用する Caffeine キャッシュ仕様文字列を設定します。指定された値は、Caffeine のCaffeineSpec
に準拠する必要があります(javadoc を参照)。- 関連事項:
createNativeCaffeineCache(java.lang.String)
Caffeine.from(String)
setCacheLoader
public void setCacheLoader(com.github.benmanes.caffeine.cache.CacheLoader<ObjectSE, ObjectSE> cacheLoader) Caffeine CacheLoader を設定して、個々のCaffeineCache
インスタンスを作成し、LoadingCache に変換します。- 関連事項:
createNativeCaffeineCache(java.lang.String)
Caffeine.build(CacheLoader)
LoadingCache
setAsyncCacheLoader
public void setAsyncCacheLoader(com.github.benmanes.caffeine.cache.AsyncCacheLoader<ObjectSE, ObjectSE> cacheLoader) Caffeine AsyncCacheLoader を設定して、個々のCaffeineCache
インスタンスを作成し、LoadingCache に変換します。これにより、暗黙的に
"asyncCacheMode"
フラグがtrue
に切り替わります。- 導入:
- 6.1
- 関連事項:
createAsyncCaffeineCache(java.lang.String)
Caffeine.buildAsync(AsyncCacheLoader)
LoadingCache
setAsyncCacheMode
public void setAsyncCacheMode(boolean asyncCacheMode) このキャッシュマネージャーが構築する共通のキャッシュ型を非同期に設定します。これは、setCacheNames(java.util.Collection<java.lang.String>)
およびオンデマンドキャッシュに適用されます。個々のキャッシュ登録 (
registerCustomCache(String, AsyncCache)
やregisterCustomCache(String, com.github.benmanes.caffeine.cache.Cache)
など) は、この設定には依存しません。デフォルトでは、このキャッシュマネージャーは通常のネイティブ Caffeine キャッシュを構築します。同期 API を通じても使用でき、
Cache#retrieve
のサポートが付属する非同期キャッシュに切り替えるには、このフラグをtrue
に設定します。非同期キャッシュモードではキャッシュ内の null 値が許容されますが、
setAllowNullValues(false)
を通じて null 値を禁止することが推奨されることに注意してください。これにより、CompletableFuture ベースのアクセスのセマンティクスが簡素化され、Caffeine が提供する CompletableFuture ハンドルをラップする必要がなくなるため、取得パフォーマンスが最適化されます。Reactor
Mono
またはFlux
などのリアクティブ型を非同期キャッシュに適応させるためにここに来た場合は、この Caffeine モードを有効にして、生成された値を 6.1 で非同期にキャッシュするための標準的な配置をお勧めします。これが既存のアプリにとってすぐには不可能または望ましくない場合は、システムプロパティ "spring.cache.reactivestreams.ignore=true" を設定して、リアクティブハンドルが通常の値として扱われる 6.0 動作を復元できます。- 導入:
- 6.1
- 関連事項:
setAllowNullValues
public void setAllowNullValues(boolean allowNullValues) このキャッシュマネージャーのすべてのキャッシュのnull
値を受け入れて変換するかどうかを指定します。Caffeine 自体が
null
値をサポートしていないにもかかわらず、デフォルトは "true" です。内部ホルダーオブジェクトは、ユーザーレベルのnull
を格納するために使用されます。isAllowNullValues
public boolean isAllowNullValues()このキャッシュマネージャーが、すべてのキャッシュのnull
値を受け入れて変換するかどうかを返します。getCacheNames
インターフェースからコピーされた説明:CacheManager
このマネージャーが知っているキャッシュ名のコレクションを取得します。- 次で指定:
- インターフェース
CacheManager
のgetCacheNames
- 戻り値:
- キャッシュマネージャーが知っているすべてのキャッシュの名前
getCache
インターフェースからコピーされた説明:CacheManager
指定された名前に関連付けられたキャッシュを取得します。ネイティブプロバイダーがサポートしている場合、キャッシュは実行時に遅延して作成される場合があることに注意してください。
- 次で指定:
- インターフェース
CacheManager
のgetCache
- パラメーター:
name
- キャッシュ識別子 (null
であってはなりません)- 戻り値:
- 関連するキャッシュ、またはそのようなキャッシュが存在しないか作成できない場合は
null
registerCustomCache
public void registerCustomCache(StringSE name, com.github.benmanes.caffeine.cache.Cache<ObjectSE, ObjectSE> cache) 指定されたネイティブ Caffeine キャッシュインスタンスをこのキャッシュマネージャーに登録し、Spring のキャッシュ API に適応させて、getCache(java.lang.String)
を介して公開します。このようなカスタムキャッシュはいくつでも並べて登録できます。これにより、キャッシュごとのカスタム設定が可能になり(キャッシュマネージャーの構成で共通設定を共有するすべてのキャッシュとは対照的)、通常は Caffeine ビルダー API である
registerCustomCache("myCache", Caffeine.newBuilder().maximumSize(10).build())
で使用されます。他のキャッシュは、
setCacheNames(java.util.Collection<java.lang.String>)
で静的に指定されているか、オンデマンドで動的に作成されているかに関係なく、キャッシュマネージャーの構成の共通設定で動作します。- パラメーター:
name
- キャッシュの名前cache
- 登録するカスタム Caffeine キャッシュインスタンス- 導入:
- 5.2.8
- 関連事項:
registerCustomCache
public void registerCustomCache(StringSE name, com.github.benmanes.caffeine.cache.AsyncCache<ObjectSE, ObjectSE> cache) 指定された Caffeine AsyncCache インスタンスをこのキャッシュマネージャーに登録し、getCache(java.lang.String)
を介して公開できるように Spring のキャッシュ API に適応させます。このようなカスタムキャッシュはいくつでも並べて登録できます。これにより、キャッシュごとのカスタム設定が可能になり(キャッシュマネージャーの構成で共通設定を共有するすべてのキャッシュとは対照的)、通常は Caffeine ビルダー API である
registerCustomCache("myCache", Caffeine.newBuilder().maximumSize(10).buildAsync())
で使用されます。他のキャッシュは、
setCacheNames(java.util.Collection<java.lang.String>)
で静的に指定されているか、オンデマンドで動的に作成されているかに関係なく、キャッシュマネージャーの構成の共通設定で動作します。- パラメーター:
name
- キャッシュの名前cache
- 登録するカスタム Caffeine AsyncCache インスタンス- 導入:
- 6.1
- 関連事項:
removeCache
指定されたキャッシュをこのキャッシュマネージャーから削除します。これは、カスタムキャッシュと実行時に動的に登録されたキャッシュに適用されます。- パラメーター:
name
- キャッシュの名前- 導入:
- 6.1.15
adaptCaffeineCache
protected Cache adaptCaffeineCache(StringSE name, com.github.benmanes.caffeine.cache.Cache<ObjectSE, ObjectSE> cache) 指定された新しいネイティブ Caffeine キャッシュインスタンスを、指定されたキャッシュ名の Spring のCache
抽象化に適合させます。- パラメーター:
name
- キャッシュの名前cache
- ネイティブ Caffeine キャッシュインスタンス- 戻り値:
- Spring CaffeineCache アダプター (またはそのデコレータ)
- 導入:
- 5.2.8
- 関連事項:
adaptCaffeineCache
protected Cache adaptCaffeineCache(StringSE name, com.github.benmanes.caffeine.cache.AsyncCache<ObjectSE, ObjectSE> cache) 指定された新しい Caffeine AsyncCache インスタンスを、指定されたキャッシュ名の Spring のCache
抽象化に適合させます。- パラメーター:
name
- キャッシュの名前cache
- Caffeine AsyncCache インスタンス- 戻り値:
- Spring CaffeineCache アダプター (またはそのデコレータ)
- 導入:
- 6.1
- 関連事項:
createCaffeineCache
このキャッシュマネージャーで指定された共通の Caffeine 構成を使用して、指定されたキャッシュ名の共通のCaffeineCache
インスタンスを構築します。Spring のキャッシュ抽象化 (一元的な装飾などを可能にする) への適応方法として
adaptCaffeineCache(java.lang.String, com.github.benmanes.caffeine.cache.Cache<java.lang.Object, java.lang.Object>)
に委譲し、新しく構築されたネイティブ Caffeine キャッシュインスタンスを渡します。- パラメーター:
name
- キャッシュの名前- 戻り値:
- Spring CaffeineCache アダプター (またはそのデコレータ)
- 関連事項:
createNativeCaffeineCache
protected com.github.benmanes.caffeine.cache.Cache<ObjectSE,ObjectSE> createNativeCaffeineCache(StringSE name) このキャッシュマネージャーで指定された共通の Caffeine 構成を使用して、指定されたキャッシュ名の共通の Caffeine キャッシュインスタンスを構築します。- パラメーター:
name
- キャッシュの名前- 戻り値:
- ネイティブ Caffeine キャッシュインスタンス
- 関連事項:
createAsyncCaffeineCache
protected com.github.benmanes.caffeine.cache.AsyncCache<ObjectSE,ObjectSE> createAsyncCaffeineCache(StringSE name) このキャッシュマネージャーで指定された共通 Caffeine 構成を使用して、指定されたキャッシュ名の共通 Caffeine AsyncCache インスタンスを構築します。- パラメーター:
name
- キャッシュの名前- 戻り値:
- Caffeine AsyncCache インスタンス
- 導入:
- 6.1
- 関連事項: