2016-08-19 5 views
0

ので、注釈を通してオブジェクト型からキャッシュを作成

私はキャッシュを点火するために、当社の既存のキャッシング(にehcache)を変換しようとすると、注釈を春に移行しています。私はいくつかの難しさに走っていますが、既存のキャッシュと同じようにアノテーションを動作させています。既存のキャッシュは新しいクラスをキャッシュするたびに自動的に作成され、新しいキャッシュはオブジェクトのクラスと同じ名前になります。

すべての現在のキャッシュロジック(通常のCRUD操作ロジックの大部分と同じ)は、すべての永続オブジェクトに対して拡張された抽象クラスにあります。しかし、春の注釈を調べるには、メソッド上にキャッシュ名を定義する必要があるように思えます。私はすべてのオブジェクトを同じキャッシュに入れる必要がない限り、抽象クラスではうまくいきません。理想的)。理想的には、キャッシュ名を「#this.class.toString」と指定しますが、キーにあるようにSPELはキャッシュ名に使用できません。

キャッシュを動的に解決する唯一の方法は、独自のキャッシュリゾルバを作成することですが、何らかの理由でIgniteCacheがspringframework Cacheを継承せず、キャッシュキャッシュを継承し、キャッシュリゾルバが元の値を返さなければなりません。だから私は、Igniteキャッシュが春のアノテーションを使ってどのように動作するのかはまったく明確ではないのですか?

これは私には非常に簡単な使用例のようですので、春のアノテーションではメソッドの明示的な名前を付ける必要があります。大部分のアプリケーションではほとんどのアプリケーションが永続化メソッドを抽象化していると仮定し、私はいくつかの重要な文書を見逃さなければならないように感じるが、確かにそれを見つけることはできない。具体的な実装ではキャッシュの名前を指定する方法はありますか?しかし、キャッシュの注釈は抽象メソッドに保持していますか?

ありがとうございます!

+0

EhCacheでSpringアノテーションを使用しましたか?はいの場合、どのように機能しましたか?そうでない場合、最初にそれらを使用する理由は何ですか?なぜIgnite APIを直接使用しないのですか? –

答えて

1

あなたの質問はかなり濃密で、あなたがしようとしていることはあまり明確ではありません。 "あなたの既存のキャッシュ"とは何ですか?あなたが実際に私が推測するものをキャッシュする場所にフラグを立てるには、何らかの方法が必要です。私は、キャッシュ注釈をそこに置く必要があることを既に理解していると思います。

キャッシュを自動的に作成するために、別のキャッシングシステムに変更しないでください。既存のキャッシュ・インフラストラクチャーを使用して最初にキャッシュ注釈に移行してから、igniteに移行してください。

あなたはまだ両方を行うふりをしましょう。あなたは正しいですCacheResolverは行く方法であり、それは普通のorg.springframework.cache.Cacheまたはjavax.cache.Cacheのいずれかに適応することができます。あなたが働くのセットアップを持っていたら、私は次のようにしてください:

  • あなたCacheResolver実装では、メソッドの呼び出しに基づいて
  • を設定されているキャッシュマネージャを注入し、使用にキャッシュ名を把握(メソッドの戻り値の型を取得し、FQNを抽出する)
  • キャッシュマネージャにそのようなキャッシュがあるかどうかを確認します。もしそうなら、それを返す。それは、新しいキャッシュを作成し、それを追加して、あなたがJCacheCacheManagerを使用している

場合は、新しいキャッシュを作成するaddCacheを起動して、署名を遵守するJCacheCacheで結果をラップすることができますことを返さない場合CacheResolver

最後の注意:FQNに基づいて自動的にキャッシュを作成することは、特にあなたがサブクラスを持っている場合、私にはやや壊れやすいようです。作成するキャッシュとそれに適用する設定(有効期限、サイズなど)については、少々コントロールする必要があります。

関連する問題