クラス CaffeineCacheManager

java.lang.ObjectSE
org.springframework.cache.caffeine.CaffeineCacheManager
実装されたすべてのインターフェース:
CacheManager

public class CaffeineCacheManager extends ObjectSE implements 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 を構築し、指定されたキャッシュ名のみのキャッシュを管理します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    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 抽象化に適合させます。
    protected com.github.benmanes.caffeine.cache.AsyncCache<ObjectSE,ObjectSE>
    このキャッシュマネージャーで指定された共通 Caffeine 構成を使用して、指定されたキャッシュ名の共通 Caffeine AsyncCache インスタンスを構築します。
    protected Cache
    このキャッシュマネージャーで指定された共通の Caffeine 構成を使用して、指定されたキャッシュ名の共通の CaffeineCache インスタンスを構築します。
    protected com.github.benmanes.caffeine.cache.Cache<ObjectSE,ObjectSE>
    このキャッシュマネージャーで指定された共通の 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
    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
    この 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 を設定します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • コンストラクターの詳細

    • CaffeineCacheManager

      public CaffeineCacheManager()
      動的な CaffeineCacheManager を構築し、リクエストされているキャッシュインスタンスを遅延作成します。
    • CaffeineCacheManager

      public CaffeineCacheManager(StringSE... cacheNames)
      静的 CaffeineCacheManager を構築し、指定されたキャッシュ名のみのキャッシュを管理します。
  • メソッドの詳細

    • setCacheNames

      public void setCacheNames(@Nullable CollectionSE<StringSE> cacheNames)
      この CacheManager の「静的」モードのキャッシュ名のセットを指定します。

      キャッシュの数とその名前は、このメソッドの呼び出し後に修正され、実行時にさらにキャッシュ領域が作成されることはありません。

      null コレクション引数でこれを呼び出すと、モードが「動的」にリセットされ、キャッシュをさらに作成できるようになります。

    • setCaffeine

      public void setCaffeine(com.github.benmanes.caffeine.cache.Caffeine<ObjectSE,ObjectSE> caffeine)
      Caffeine を設定して、個々の CaffeineCache インスタンスを作成します。
      関連事項:
    • setCaffeineSpec

      public void setCaffeineSpec(com.github.benmanes.caffeine.cache.CaffeineSpec caffeineSpec)
      個々の CaffeineCache インスタンスの構築に使用する CaffeineSpec を設定します。
      関連事項:
    • setCacheSpecification

      public void setCacheSpecification(StringSE cacheSpecification)
      個々の CaffeineCache インスタンスを構築するために使用する Caffeine キャッシュ仕様文字列を設定します。指定された値は、Caffeine の CaffeineSpec に準拠する必要があります(javadoc を参照)。
      関連事項:
    • setCacheLoader

      public void setCacheLoader(com.github.benmanes.caffeine.cache.CacheLoader<ObjectSE,ObjectSE> cacheLoader)
      Caffeine CacheLoader を設定して、個々の CaffeineCache インスタンスを作成し、LoadingCache に変換します。
      関連事項:
    • setAsyncCacheLoader

      public void setAsyncCacheLoader(com.github.benmanes.caffeine.cache.AsyncCacheLoader<ObjectSE,ObjectSE> cacheLoader)
      Caffeine AsyncCacheLoader を設定して、個々の CaffeineCache インスタンスを作成し、LoadingCache に変換します。

      これにより、暗黙的に "asyncCacheMode" フラグが true に切り替わります。

      導入:
      6.1
      関連事項:
    • 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

      public CollectionSE<StringSE> getCacheNames()
      インターフェースからコピーされた説明: CacheManager
      このマネージャーが知っているキャッシュ名のコレクションを取得します。
      次で指定:
      インターフェース CacheManagergetCacheNames 
      戻り値:
      キャッシュマネージャーが知っているすべてのキャッシュの名前
    • getCache

      @Nullable public Cache getCache(StringSE name)
      インターフェースからコピーされた説明: CacheManager
      指定された名前に関連付けられたキャッシュを取得します。

      ネイティブプロバイダーがサポートしている場合、キャッシュは実行時に遅延して作成される場合があることに注意してください。

      次で指定:
      インターフェース CacheManagergetCache 
      パラメーター:
      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
      関連事項:
    • 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

      protected Cache createCaffeineCache(StringSE name)
      このキャッシュマネージャーで指定された共通の 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
      関連事項: