アノテーションインターフェース CacheEvict
@TargetSE({TYPESE,METHODSE})
@RetentionSE(RUNTIMESE)
@InheritedSE
@DocumentedSE
@Reflective
public @interface CacheEvict
メソッド(またはクラスのすべてのメソッド)が
cache evict
操作をトリガーすることを示すアノテーション。このアノテーションをメタアノテーションとして使用して、属性をオーバーライドしたカスタム合成アノテーションを作成できます。
- 導入:
- 3.1
- 作成者:
- Costin Leau, Stephane Nicoll, Sam Brannen
- 関連事項:
オプション要素の概要
オプション要素修飾子と型オプションの要素説明boolean
キャッシュ内のすべてのエントリが削除されるかどうか。boolean
メソッドが呼び出される前にエビクションが発生するかどうか。デフォルトCacheResolver
がまだ設定されていない場合に作成するために使用するカスタムCacheManager
の Bean 名。StringSE[]
キャッシュの排除操作に使用するキャッシュの名前。使用するカスタムCacheResolver
の Bean 名。キャッシュエビクション操作を条件付きにするために使用される Spring 式言語(SpEL)式。キーを動的に計算するための Spring Expression Language(SpEL)式。使用するカスタムKeyGenerator
の Bean 名。StringSE[]
cacheNames()
のエイリアス。
要素の詳細
value
cacheNames()
のエイリアス。- デフォルト:
- {}
cacheNames
キャッシュの排除操作に使用するキャッシュの名前。名前を使用して、特定の Bean 定義の修飾子の値または Bean 名に一致するターゲットキャッシュ(1 つまたは複数)を決定できます。
- 導入:
- 4.2
- 関連事項:
- デフォルト:
- {}
key
StringSE keyキーを動的に計算するための Spring Expression Language(SpEL)式。デフォルトは
""
です。つまり、カスタムkeyGenerator()
が設定されていない限り、すべてのメソッドパラメーターがキーと見なされます。SpEL 式は、次のメタデータを提供する専用のコンテキストに対して評価します。
#result
は、メソッド呼び出しの結果への参照です。これは、beforeInvocation()
がfalse
の場合にのみ使用できます。Optional
などのサポートされているラッパーの場合、#result
はラッパーではなく実際のオブジェクトを参照します- それぞれ
method
SE、ターゲットオブジェクト、影響を受けるキャッシュへの参照用の#root.method
、#root.target
、#root.caches
。 - メソッド名(
#root.methodName
)およびターゲットクラス(#root.targetClass
)のショートカットも利用できます。 - メソッドの引数はインデックスでアクセスできます。たとえば、2 番目の引数は
#root.args[1]
、#p1
、#a1
を介してアクセスできます。その情報が利用可能な場合、引数は名前でアクセスすることもできます。
- デフォルト:
- ""
keyGenerator
StringSE keyGenerator使用するカスタムKeyGenerator
の Bean 名。key()
属性と相互に排他的です。- デフォルト:
- ""
cacheManager
StringSE cacheManagerデフォルトCacheResolver
がまだ設定されていない場合に作成するために使用するカスタムCacheManager
の Bean 名。cacheResolver()
属性と相互に排他的です。- デフォルト:
- ""
cacheResolver
StringSE cacheResolver使用するカスタムCacheResolver
の Bean 名。- デフォルト:
- ""
condition
StringSE conditionSpring キャッシュ削除操作を条件付きにするために使用される式言語 (SpEL) 式。条件がtrue
と評価された場合、そのキャッシュを削除します。デフォルトは
""
です。つまり、キャッシュの追い出しは常に実行されます。SpEL 式は、次のメタデータを提供する専用のコンテキストに対して評価します。
- それぞれ
method
SE、ターゲットオブジェクト、影響を受けるキャッシュへの参照用の#root.method
、#root.target
、#root.caches
。 - メソッド名(
#root.methodName
)およびターゲットクラス(#root.targetClass
)のショートカットも利用できます。 - メソッドの引数はインデックスでアクセスできます。たとえば、2 番目の引数は
#root.args[1]
、#p1
、#a1
を介してアクセスできます。その情報が利用可能な場合、引数は名前でアクセスすることもできます。
- デフォルト:
- ""
- それぞれ
allEntries
boolean allEntriesキャッシュ内のすべてのエントリが削除されるかどうか。デフォルトでは、関連付けられたキーの値のみが削除されます。
このパラメーターを
true
に設定し、key()
を指定することはできないことに注意してください。- デフォルト:
- false
beforeInvocation
boolean beforeInvocationメソッドが呼び出される前にエビクションが発生するかどうか。この属性を
true
に設定すると、メソッドの結果(つまり、例外をスローしたかどうか)に関係なく、エビクションが発生します。デフォルトは
false
です。つまり、アドバイスされたメソッドが正常に呼び出された後(つまり、呼び出しが例外をスローしなかった場合のみ)、キャッシュの排除操作が行われます。- デフォルト:
- false