2

Spring のキャッシングの抽象化により、キャッシュを読み通すだけでなく、特定のアイテムをキャッシュに取り込むことは可能ですか?

Thing getItem(UUID id)メソッドとがあると想像してくださいsetItem(UUID id, Thing thing)。前者で使用してキャッシュから読み取らせたいのです@Cacheableが、存在しない場合は基になるメソッドを呼び出します。thingセッターが呼び出されたら、パラメーターをキャッシュに追加してから、メソッドを呼び出して、それを基になるストレージに永続化したいと思います。

4

2 に答える 2

1

Luciano が述べたように、メソッドに @CachePut アノテーションを設定できますが、彼が述べているように、API を変更する必要があります。ただし、流動的な API スタイルで受け取るセマンティクスが好きかどうかによっては、これは利点になる可能性があります。

ただし、別のオプションがありますが、Spring に縛られ、setItem コードが少し厄介になります。いつでも CacheManager に配線し、setItem メソッドでキャッシュ自体にデータを設定できます。

したがって、次のようになります。

@Autowire private CacheManager cacheManager;

public void setItem(UUID id, Thing thing) {
  Cache c = cacheManager.getCache("cacheName");
  if (c != null) {
    c.put(id, thing);   
  }
  //Do more
}
于 2013-06-19T15:49:42.823 に答える