Ehcacheのコメント(転載)

実際にはEhcacheの使用は春のキャッシュのコメントです。

@Cacheable 1.1
@Cacheableが邪魔に標識することができる、それはまた、クラスにマークすることができます。これは、マークは、クラスのクラスメソッドは、すべてのキャッシュタグ方式でサポートされていることを示したときの方法は、キャッシュをサポートすることであることを示しています。キャッシングをサポートする方法については、春には、あなたがこの方法を再度メソッドを実行する必要がなく、その結果、キャッシュから直接同じパラメータを使用して行われる次の時間を得ることができます保証するために、呼び出された後にキャッシュされた値を返します。春の戻り値のキャッシュ方法は、リターンキーをキャッシュに基づいている中で、値は、キーワードとして、春方法の結果であり、2つの戦略、デフォルトのポリシーとカスタムポリシーをサポートし、これについては後述します。1がサポートしている場合、キャッシュ方式は、キャッシュ機能を起動しませんオブジェクトの内部と呼ばれていることに注意してください。@Cacheableは3つの属性、値、キーと条件を指定することができます。

キャッシュ1.1.1 value属性は、名前を指定し
、戻り値を表す、指定しなければなりませんvalueプロパティを、現在の方法は、キャッシュ、キャッシュの名前に対応する上でキャッシュされますされています。どちらであってもよく、またはキャッシュ・アレイの複数であることを特定する必要があるキャッシュキャッシュ、複数であってもよいです。

   @Cacheable("cache1")//Cache是发生在cache1上的
   public User find(Integer id) { return null; } @Cacheable({"cache1", "cache2"})//Cache是发生在cache1和cache2上的 public User find(Integer id) { return null; } 

1.1.2キーのプロパティのカスタムキー
のキー属性は、対応するキャッシュ春キーはメソッドの結果を返したときに指定するために使用されます。プロパティはSpringEL式をサポートしています。私たちは、この属性を指定しない場合は、春には、デフォルトの戦略生成されたキーを使用します。デフォルトのポリシーは、後に別々に導入されるように、ここでは、カスタムポリシーを見てみましょう。
カスタムポリシーは、私たちが春のEL式により、当社のキーを指定することができることを意味します。ここではEL式は、パラメータとその対応する属性を使用することができます。メソッドのパラメータを使用している場合、我々は直接「#パラメータ名」や「#Pのパラメータインデックス」を使用することができます。次の例のような重要なパラメータのいくつかはあります。

  @Cacheable(value="users", key="#id")
  public User find(Integer id) { return null; } @Cacheable(value="users", key="#p0") public User find(Integer id) { return null; } @Cacheable(value="users", key="#user.id") public User find(User user) { return null; } @Cacheable(value="users", key="#p0.id") public User find(User user) { return null; } 

キーとして、上記方法のパラメータに加えて、春はまた、私たちは鍵を生成するために使用されるルート・オブジェクトを提供します。私たちは、ルートオブジェクトを介して、以下の情報を得ることができます。

 
Paste_Image.png

我々はキーとしてルートオブジェクトの属性を使用したい場合は、デフォルトの春のプロパティは、使用のルートオブジェクトであるため、私たちは「#rootは」を省略することができます。以下のような:

  @Cacheable(value={"users", "xxx"}, key="caches[1].name")
  public User find(User user) { return null; } 

1.1.3条件属性は、条件が発生指定し
、時には我々はすべての結果を返すようにする方法をキャッシュしたくないかもしれません。この機能は、条件プロパティを介して達成することができます。空白の条件プロパティのデフォルト値は、すべてのコールは、状況にキャッシュされます。値は、キャッシュ処理が真である場合にSpringEL式で指定され、すなわち、メソッドはメソッドを一度に偽呼び出されるたびに実行され、キャッシュしない表します。例に続いて、IDユーザーの偶数がキャッシュされるときにのみ表しています。

  @Cacheable(value={"users"}, key="#user.id", condition="#user.id%2==0")
  public User find(User user) { System.out.println("find user by user " + user); return user; } 

1.2 @CachePut
から直接そこにメソッドを実行もはやですが、あれば使用@Cacheableためにマーク春キャッシュ環境のサポートとは、春には、各実行キャッシュの前に同じキーのチェックのキャッシュ要素が存在しないかどうかキャッシュの結果は、それ以外の場合は、指定されたキャッシュに結果を実行し、返され、返されます。
@CachePutまた、キャッシュ機能をサポートするためのメソッドを宣言することができます。@Cacheable方法がマークされていないことを@CachePutは、実行前にキャッシュの前にそこに行ったかどうかの結果を確認するために、しかし、この方法では毎回行われ、キーと値の実行結果の(戻り値)されることを除いて指定されたキャッシュに形成します。戻り値がなければならないので、戻り値は、新しいキャッシュに配置されていないことはありません。
@CachePutは、クラスやメソッドの上にマークされることがあります。@CachePut使用している場合@Cacheableが同じであると私たちは、プロパティを指定することができます。

  @CachePut("users")//每次都会执行方法,并将结果存入指定的缓存中
  public User find(Integer id) { return user; } 

@CacheEvict 1.3
@CacheEvictは、クラスやメソッドのキャッシュ要素をクリアする必要性にマークするために使用されます。どのクラスのときにキャッシュタグトリガのクリーンアップのすべてを行う方法を表しています。@CacheEvictは、属性値、キー、状態、allEntriesとbeforeInvocationを指定することができます。前記属性値、キー、および条件に対応する@Cacheable同じような意味。この値は、クリーンアップ操作を表しキャッシュで行われます(対応するキャッシュの名前)で、キーをクリアする必要性を表明し、キー、指定されていない場合、デフォルトのキー戦略が生成され、条件が動作条件が発生したクリア。ここでは、二つの特性のallEntriesを導入し、beforeInvocationは、新興。
1.3.1 allEntriesプロパティ
allEntriesすべての要素がキャッシュをクリアする必要があるかどうかを示すブール値を入力します。デフォルトでは必要ないという意味、falseです。あなたはallEntriesを指定する場合はtrueで、春のキャッシュは、指定されたキーを無視します。時々 、私たちは、より効率的なのは明らか要素よりも、すべての要素をクリアするために、キャッシュを見てする必要があります。

  @CacheEvict(value="users", allEntries=true)
  public void delete(Integer id) { System.out.println("delete user by id: " + id); } 

1.3.2 beforeInvocationプロパティの
既定値は、対応する方法によってトリガされた後のクリーンアップは、クリア動作がスローされ、返される例外のため、失敗した場合、そのメソッドがトリガーされることはありません、成功しています。私たちは、プロパティの値がtrueを指定したときに、トリガのクリーンアップ時間を変更するbeforeInvocationを使用し、春には、メソッドを呼び出す前に、キャッシュ内の指定された要素をクリアします。

  @CacheEvict(value="users", beforeInvocation=true)
  public void delete(Integer id) { System.out.println("delete user by id: " + id); } 

実際には、使用に加えて、キャッシュ要素をクリア@CacheEvictが、私たちが達成するようEhcacheのを使用する場合、我々はまた、EhcacheのはEhcacheのプロファイルで指定された彼らの戦略、取り除く構成することができます。
1.4 @Caching
@Caching注釈は、私たちは一つの方法またはクラスに関連する複数の注釈春のキャッシュを指定することができます。これは3つの属性がありますキャッシュ可能、入れて追い出し、CachePutと@CacheEvict @、キャッシュ可能@を指定するために使用されています。

   @Caching(cacheable = @Cacheable("users"), evict = { @CacheEvict("cache2"), @CacheEvict(value = "cache3", allEntries = **true**) }) **public** User find(Integer id) { **return****null**; } 

デフォルトポリシーの3.1キー
のKeyGeneratorによってデフォルトのキー生成方法が生成され、次のように、デフォルトの戦略は次のとおりです。

  • メソッドにパラメータがない場合は、0がキーとして使用されます。
  • 一つのパラメータのみ場合、このパラメータは、キーとして使用されます。
  • 複数のパラメータの場合、すべてのパラメータをキーとしてハッシュコードを使用します。

私たちは、独自のデフォルトポリシーを指定する必要がある場合、我々はあなた自身のKeyGeneratorを実装して、私たち自身の定義をするKeyGeneratorするために使用するKeyGenerator私たちの春のキャッシュを指定することができます。
キャッシュが使用注釈ベースの構成:指定された注釈主導。

   <cache:annotation-driven key-generator=*"userKeyGenerator"*/>
  
   <bean id="userKeyGenerator" class="com.xxx.cache.UserKeyGenerator"/> 

キャッシュを通じてXMLベースの構成を使用する場合:アドバイスを指定します。

   <cache:advice id="cacheAdvice" cache-manager="cacheManager" key-generator="userKeyGenerator"> </cache:advice> 

重要:
実際にehcacheの使用においては、オブジェクトがキャッシュ機能をトリガしません内部のスプリングキャッシュの注釈は1がサポートしている場合、キャッシングメソッドが呼び出されることに留意すべきです。
@Cacheableパラメータ:値はキャッシュ上のキャッシュを意味し、キーは、キーに対応するキャッシュされた結果を返す方法を意味し、条件はどのような状況下で、キャッシュを参照します。
それがキャッシュ内で発見された場合@Cacheable同じキーは、キャッシュからデータを取得します。@CachePutその後、キャッシュに結果をするたびに再実行、および。キャッシュをクリア@CacheEvict。
キーなしの場合。これは、あなたも、キー生成方法をカスタマイズすることができ、デフォルトの戦略は、キー(パラメータ)であります



リンクします。https://www.jianshu.com/p/db110523a387
参照  http://www.iteye.com/blogs/subjects/ehcache

おすすめ

転載: www.cnblogs.com/guanbin-529/p/10927711.html