11

アプリケーションで負荷テストを行っているときに、 @Transactional および @Cacheable アノテーションを使用すると、休止状態が常にデータベース トランザクションを作成することに気付きました。これを防ぐ簡単な方法はありますか?春にこれを解決するためのより洗練された方法は、次のクラス/インターフェースを持つことです

  • Servicelayer インターフェイス
  • 単なるプロキシ/転送であるキャッシュ可能な注釈付きクラス
  • トランザクション アノテーション実装クラス

何が起こるかは次のとおりです

コール 1:

  1. トランザクションが作成される
  2. クラスメソッドが呼び出される
  3. 結果がキャッシュされて返される

コール 2:

  1. トランザクションが作成される
  2. キャッシュされた結果が返される

好ましい結果は次のとおりです。

コール 1:

  1. トランザクションが作成される
  2. クラスメソッドが呼び出される
  3. 結果がキャッシュされて返される

コール 2:

  1. キャッシュされた結果が返される
4

1 に答える 1

12

アスペクトの相対的な順序を変更する必要が@Transactionalあり@Cacheableます。

およびorderの属性を使用して構成できます。順序値の意味については、8.2.4.7アドバイスの順序を参照してください。<tx:annotation-driven><cache:annotation-driven>

于 2012-05-21T11:03:38.297 に答える