2016-12-26 7 views
0

Springのリクエストパラメータに基づいてレスポンスをキャッシュするとします。 例: @Cacheable(value = "personDetails", key = "#personId") public PersonDetails getPersonDetails(String personId) { // Do something } 誰かがpersonIdとして 'ALL'を渡すことができ、キャッシュしたくないとしましょう。渡されたInputパラメーターに基づいて、キャッシュするかどうかを実行時に決定できる可能性があります。この例では申し訳ありませんが、同じケースで使用しています。事前の応答用Springの入力に基づいて何かをキャッシュするかどうかを決定できますか?

感謝:)

+0

。サーバーレベルのキャッシュを実装するには、いくつかのパラメータとその値が必要です。だからここでは、あなたにあるレスポンスが変更されていないことをクライアントに伝える値として 'ALL'を考慮することができます.Jax-rsまたはSpringでETagクラスを使用してこの機能を実装することができます。 例:@Cacheable(value = "users"、条件= "#name.length <32"、= "#result.hardback"以外) –

答えて

1

はい、あなたはcondition属性を使用することができます。

場合によっては、メソッドが常にキャッシュに適さない場合があります(たとえば、指定された引数によって異なる場合があります)。キャッシュ注釈はパラメータを介してこのような機能をサポートしており、の式はtrueまたはfalseのいずれかと評価されます。例えば

:あなたはhereConditional caching下の段落を見つけることができます

@Cacheable(value = "personDetails", key = "#personId", condition="#personId != 'ALL'") 
public PersonDetails getPersonDetails(String personId) { 
    // Do something 
} 

詳しい情報。

+0

ありがとうございます。完全で正確に見えます。 –

関連する問題