次のような安らかなAPI呼び出しを使用
myserver/api/mydata?req?%7Bcode%3A%2244%22%2C%20name%3A%22sally%22%2C%20version%3A7%7D
ここで、渡されるパラメーターは code=44、name=sally、および version=7 で、名前とバージョンのみをキーとして使用して応答をキャッシュしたいのですが、コードは使用しません。
私がやりたいことはこれです:
@Cacheable(value="myCache", key="#name.concat(#version)")
def mydata() {
.....
}
ただし、#name と #version は両方とも null に解決されます。どうやら、その形式は params.name または params.version ではなく、メソッド パラメーターに対してのみ機能します。
キーをデフォルトのままにすると、キャッシュは 3 つのパラメーターすべてをキーとして使用します (1 つを変更すると、キャッシュは使用されません)。「コード」に関係なく、キーとして「名前」と「バージョン」に基づいてキャッシュを使用することを除いて、それは素晴らしいことです。
デフォルトの KeyGenerator をオーバーライドする必要があると思いますが、試してみましたが失敗しました。これを行う方法に関するアドバイスはありますか?
または、 @Cacheable アノテーションを使用して params プロパティにアクセスする方法はありますか?