クラス 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 classprotected static class特定の呼び出しに依存しないキャッシュ操作のメタデータは、キャッシュの適切な候補になります。フィールドのサマリー
フィールド修飾子と型フィールド説明static final StringSESpring のキャッシュインフラストラクチャに、Reactive Streams、特にCacheableメソッドの戻り値の型宣言内の Reactor のMono/Fluxの存在を無視するように指示するシステムプロパティ。protected final Logクラス org.springframework.cache.interceptor.AbstractCacheInvoker から継承されたフィールド
errorHandlerコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明voidvoidシングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。protected voidキャッシュされたメタデータをクリアします。voidconfigure(SupplierSE<CacheErrorHandler> errorHandler, SupplierSE<KeyGenerator> keyGenerator, SupplierSE<CacheResolver> cacheResolver, SupplierSE<CacheManager> cacheManager) 指定されたエラーハンドラー、キージェネレーター、キャッシュリゾルバー / マネージャーのサプライヤーでこのアスペクトを設定し、サプライヤーが解決できない場合は対応するデフォルトを適用します。protected ObjectSEexecute(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.CacheOperationContextgetOperationContext(CacheOperation operation, MethodSE method, ObjectSE[] args, ObjectSE target, ClassSE<?> targetClass) protected ObjectSEinvokeOperation(CacheOperationInvoker invoker) 基本的な操作を実行し(通常はキャッシュミスの場合)、呼び出しの結果を返します。protected StringSEmethodIdentification(MethodSE method, ClassSE<?> targetClass) ロギングで使用するためにこのメソッドの文字列表現を返す簡易メソッド。voidsetBeanFactory(BeanFactory beanFactory) 含まれているBeanFactoryをCacheManagerおよびその他のサービス検索用に設定します。voidsetCacheManager(CacheManager cacheManager) デフォルトCacheResolverの作成に使用するCacheManagerを設定します。voidsetCacheOperationSource(CacheOperationSource cacheOperationSource) このキャッシュアスペクトの CacheOperationSource を設定します。voidsetCacheOperationSources(CacheOperationSource... cacheOperationSources) キャッシュ属性の検索に使用される 1 つ以上のキャッシュ操作ソースを設定します。voidsetCacheResolver(CacheResolver cacheResolver) 操作に特定のキャッシュリゾルバーが設定されていない場合に、このキャッシュアスペクトが委譲するデフォルトのCacheResolverを設定します。voidsetKeyGenerator(KeyGenerator keyGenerator) 操作に特定のキージェネレーターが設定されていない場合、このキャッシュアスペクトが委譲するデフォルトのKeyGeneratorを設定します。クラス org.springframework.cache.interceptor.AbstractCacheInvoker から継承されたメソッド
doClear, doEvict, doGet, doPut, getErrorHandler, setErrorHandler
フィールドの詳細
IGNORE_REACTIVESTREAMS_PROPERTY_NAME
Spring のキャッシュインフラストラクチャに、Reactive Streams、特にCacheableメソッドの戻り値の型宣言内の Reactor のMono/Fluxの存在を無視するように指示するシステムプロパティ。デフォルトでは、6.1 の時点で、Reactor の
Mono/Fluxなどの Reactive Streams パブリッシャーは、返されたPublisherインスタンス自体をキャッシュしようとするのではなく、生成された値の非同期キャッシュのために特別に処理されます。Reactive Streams パブリッシャーを無視し、同期キャッシュを通じて通常の戻り値として処理し、6.0 の動作を復元するには、このフラグを "true" に切り替えます。これは推奨されず、非常に限られたシナリオでのみ機能することに注意してください。手動の
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- キャッシュされている操作を処理する呼び出し元- 戻り値:
- 呼び出しの結果
- 関連事項: