クラス CacheAspectSupport
- 実装されたすべてのインターフェース:
Aware
、BeanFactoryAware
、InitializingBean
、SmartInitializingSingleton
- 既知の直属サブクラス
CacheInterceptor
CacheInterceptor
や AspectJ アスペクトなど、アスペクトをキャッシュするための基本クラス。これにより、基になる Spring キャッシングインフラストラクチャを簡単に使用して、任意のアスペクトシステムのアスペクトを実装できます。
サブクラスは、関連するメソッドを正しい順序で呼び出す責任があります。
戦略設計パターンを使用します。CacheOperationSource
はキャッシュ操作の決定に使用され、KeyGenerator
はキャッシュキーを構築し、CacheResolver
は実際に使用するキャッシュを解決します。
メモ: キャッシュアスペクトは直列化可能ですが、逆直列化後に実際のキャッシュを実行しません。
- 導入:
- 3.1
- 作成者:
- Costin Leau, Juergen Hoeller, Chris Beams, Phillip Webb, Sam Brannen, Stephane Nicoll, Sebastien Deleuze
ネストされたクラスのサマリー
修飾子と型クラス説明protected class
protected static class
特定の呼び出しに依存しないキャッシュ操作のメタデータは、キャッシュの適切な候補になります。フィールドサマリー
修飾子と型フィールド説明static final StringSE
Spring のキャッシュインフラストラクチャに、Reactive Streams、特にCacheable
メソッドの戻り値の型宣言内の Reactor のMono
/Flux
の存在を無視するように指示するシステムプロパティ。protected final Log
クラス org.springframework.cache.interceptor.AbstractCacheInvoker から継承されたフィールド
errorHandler
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明void
void
シングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。protected void
キャッシュされたメタデータをクリアします。void
configure
(SupplierSE<CacheErrorHandler> errorHandler, SupplierSE<KeyGenerator> keyGenerator, SupplierSE<CacheResolver> cacheResolver, SupplierSE<CacheManager> cacheManager) 指定されたエラーハンドラー、キージェネレーター、キャッシュリゾルバー / マネージャーのサプライヤーでこのアスペクトを設定し、サプライヤーが解決できない場合は対応するデフォルトを適用します。protected ObjectSE
execute
(CacheOperationInvoker invoker, ObjectSE target, MethodSE method, ObjectSE[] args) protected <T> T
指定された名前と型の Bean を取得します。getCacheOperationMetadata
(CacheOperation operation, MethodSE method, ClassSE<?> targetClass) 指定された操作のCacheAspectSupport.CacheOperationMetadata
を返します。このキャッシュアスペクトの CacheOperationSource を返します。このキャッシュアスペクトが委譲するデフォルトのCacheResolver
を返します。protected CollectionSE<? extends Cache>
getCaches
(CacheOperationInvocationContext<CacheOperation> context, CacheResolver cacheResolver) このキャッシュアスペクトが委譲するデフォルトのKeyGenerator
を返します。protected CacheAspectSupport.CacheOperationContext
getOperationContext
(CacheOperation operation, MethodSE method, ObjectSE[] args, ObjectSE target, ClassSE<?> targetClass) protected ObjectSE
invokeOperation
(CacheOperationInvoker invoker) 基本的な操作を実行し(通常はキャッシュミスの場合)、呼び出しの結果を返します。protected StringSE
methodIdentification
(MethodSE method, ClassSE<?> targetClass) ロギングで使用するためにこのメソッドの文字列表現を返す簡易メソッド。void
setBeanFactory
(BeanFactory beanFactory) 含まれているBeanFactory
をCacheManager
およびその他のサービス検索用に設定します。void
setCacheManager
(CacheManager cacheManager) デフォルトCacheResolver
の作成に使用するCacheManager
を設定します。void
setCacheOperationSource
(CacheOperationSource cacheOperationSource) このキャッシュアスペクトの CacheOperationSource を設定します。void
setCacheOperationSources
(CacheOperationSource... cacheOperationSources) キャッシュ属性の検索に使用される 1 つ以上のキャッシュ操作ソースを設定します。void
setCacheResolver
(CacheResolver cacheResolver) 操作に特定のキャッシュリゾルバーが設定されていない場合に、このキャッシュアスペクトが委譲するデフォルトのCacheResolver
を設定します。void
setKeyGenerator
(KeyGenerator keyGenerator) 操作に特定のキージェネレーターが設定されていない場合、このキャッシュアスペクトが委譲するデフォルトのKeyGenerator
を設定します。クラス org.springframework.cache.interceptor.AbstractCacheInvoker から継承されたメソッド
doClear, doEvict, doGet, doGet, doPut, doRetrieve, doRetrieve, getErrorHandler, setErrorHandler
フィールドの詳細
IGNORE_REACTIVESTREAMS_PROPERTY_NAME
Spring のキャッシュインフラストラクチャに、Reactive Streams、特にCacheable
メソッドの戻り値の型宣言内の Reactor のMono
/Flux
の存在を無視するように指示するシステムプロパティ。デフォルトでは、6.1 の時点で、Reactor の
Mono
/Flux
などの Reactive Streams パブリッシャーは、返されたPublisher
インスタンス自体をキャッシュしようとするのではなく、生成された値の非同期キャッシュのために特別に処理されます。このフラグを "true" に切り替えると、Reactive Streams パブリッシャーを無視し、同期キャッシュを通じて通常の戻り値として処理し、6.0 の動作を復元します。これは推奨されておらず、手動の
Mono.cache()
/Flux.cache()
呼び出しなどの非常に限られたシナリオでのみ機能することに注意してください。logger
コンストラクターの詳細
CacheAspectSupport
protected CacheAspectSupport()
メソッドの詳細
configure
public void configure(@Nullable SupplierSE<CacheErrorHandler> errorHandler, @Nullable SupplierSE<KeyGenerator> keyGenerator, @Nullable SupplierSE<CacheResolver> cacheResolver, @Nullable SupplierSE<CacheManager> cacheManager) 指定されたエラーハンドラー、キージェネレーター、キャッシュリゾルバー / マネージャーのサプライヤーでこのアスペクトを設定し、サプライヤーが解決できない場合は対応するデフォルトを適用します。- 導入:
- 5.1
setCacheOperationSources
キャッシュ属性の検索に使用される 1 つ以上のキャッシュ操作ソースを設定します。複数のソースが提供されている場合、CompositeCacheOperationSource
を使用して集約されます。setCacheOperationSource
このキャッシュアスペクトの CacheOperationSource を設定します。getCacheOperationSource
このキャッシュアスペクトの CacheOperationSource を返します。setKeyGenerator
操作に特定のキージェネレーターが設定されていない場合、このキャッシュアスペクトが委譲するデフォルトのKeyGenerator
を設定します。デフォルトは
SimpleKeyGenerator
です。getKeyGenerator
このキャッシュアスペクトが委譲するデフォルトのKeyGenerator
を返します。setCacheResolver
操作に特定のキャッシュリゾルバーが設定されていない場合に、このキャッシュアスペクトが委譲するデフォルトのCacheResolver
を設定します。デフォルトのリゾルバーは、名前とデフォルトのキャッシュマネージャーに対してキャッシュを解決します。
getCacheResolver
このキャッシュアスペクトが委譲するデフォルトのCacheResolver
を返します。setCacheManager
setBeanFactory
含まれているBeanFactory
をCacheManager
およびその他のサービス検索用に設定します。- 次で指定:
- インターフェース
BeanFactoryAware
のsetBeanFactory
- パラメーター:
beanFactory
- 所有 BeanFactory(非null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。- 導入:
- 4.3
- 関連事項:
afterPropertiesSet
public void afterPropertiesSet()インターフェースからコピーされた説明:InitializingBean
すべての Bean プロパティを設定し、BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
afterSingletonsInstantiated
public void afterSingletonsInstantiated()インターフェースからコピーされた説明:SmartInitializingSingleton
シングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。このメソッド内のListableBeanFactory.getBeansOfType(java.lang.Class<T>)
呼び出しは、ブートストラップ中に偶発的な副作用を引き起こしません。注意 : このコールバックは、
BeanFactory
ブートストラップ後にオンデマンドで遅延初期化されたシングルトン Bean ではトリガーされず、他の Bean スコープでもトリガーされません。意図されたブートストラップセマンティクスのみを使用する Bean には慎重に使用してください。- 次で指定:
- インターフェース
SmartInitializingSingleton
のafterSingletonsInstantiated
methodIdentification
ロギングで使用するためにこのメソッドの文字列表現を返す簡易メソッド。特定のメソッドに異なる識別子を提供するために、サブクラスでオーバーライドできます。- パラメーター:
method
- 興味のある方法targetClass
- メソッドが存在するクラス- 戻り値:
- このメソッドを識別するログメッセージ
- 関連事項:
getCaches
protected CollectionSE<? extends Cache> getCaches(CacheOperationInvocationContext<CacheOperation> context, CacheResolver cacheResolver) getOperationContext
protected CacheAspectSupport.CacheOperationContext getOperationContext(CacheOperation operation, MethodSE method, ObjectSE[] args, ObjectSE target, ClassSE<?> targetClass) getCacheOperationMetadata
protected CacheAspectSupport.CacheOperationMetadata getCacheOperationMetadata(CacheOperation operation, MethodSE method, ClassSE<?> targetClass) 指定された操作のCacheAspectSupport.CacheOperationMetadata
を返します。操作に使用する
CacheResolver
およびKeyGenerator
を解決します。- パラメーター:
operation
- 操作method
- 操作が呼び出されるメソッドtargetClass
- ターゲット型- 戻り値:
- 操作の解決されたメタデータ
getBean
指定された名前と型の Bean を取得します。CacheOperation
で名前によって参照されるサービスを解決するために使用されます。- パラメーター:
name
- キャッシュ操作で定義された Bean の名前serviceType
- オペレーションのサービス参照によって予期される型- 戻り値:
- 指定された名前で修飾された、予期される型に一致する Bean
- 例外:
NoSuchBeanDefinitionException
- そのような Bean が存在しない場合- 関連事項:
clearMetadataCache
protected void clearMetadataCache()キャッシュされたメタデータをクリアします。execute
invokeOperation
基盤となる操作を実行し(通常はキャッシュミスの場合)、呼び出しの結果を返します。例外が発生すると、CacheOperationInvoker.ThrowableWrapper
でラップされます。例外は処理または変更できますが、CacheOperationInvoker.ThrowableWrapper
でもラップする必要があります。- パラメーター:
invoker
- キャッシュされている操作を処理する呼び出し元- 戻り値:
- 呼び出しの結果
- 関連事項: