問題タブ [spring-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - Spring Data リポジトリでの Spring の宣言型キャッシング サポートをテストする方法は?
MemberRepository
を拡張する Spring Data リポジトリ、インターフェイスを開発しましたorg.springframework.data.jpa.repository.JpaRepository
。MemberRepository
メソッドがあります:
結果は、Spring キャッシュ抽象化によってキャッシュされます (によってサポートされますConcurrentMapCache
)。
私が抱えている問題は、結果が最初にdbから取得され、2回目にキャッシュから取得されることを主張する統合テスト(hsqldbに対して)を書きたいということです。
私は当初、jpa インフラストラクチャ (エンティティ マネージャーなど) をモックすることを考えていましたが、エンティティ マネージャーは 2 回目には呼び出されないと何らかの形で主張しましたが、難しすぎる/面倒だと思われます ( https://stackoverflow.com/a/23442457/536299を参照)。 )。
で注釈が付けられた Spring Data Repository メソッドのキャッシング動作をテストする方法について、誰かがアドバイスを提供できますか@Cacheable
?
mockito - Spring データ リポジトリでの Spring の宣言型キャッシング サポートのテストに関する問題
Spring Data JPA リポジトリ (拡張) のSpring キャッシング サポート (ここでJpaRepository
説明) をテストしようとしていますが、実際には構成に問題があります。
これが私のリポジトリメソッドです:
これが私のCacheConfigurationです:
これが私のテストです:
上記のテストを実行すると、型のオブジェクトがキーとしてSimpleKey
渡され、値としてnullが渡されることがわかりました。ConcurrentMapCache
私の場合、ストアのタイプは:com.google.common.cache.LocalCache
で、put メソッドには null チェックがあり、NPE が発生します....
スタック トレースは次のとおりです。
java - spring 3 でメソッド実行後に @Cacheable を強制的に動作させる方法は?
エンティティをデータベースに保存するメソッドがあります。それは次のとおりです。
Employee
結果を key = id
of でキャッシュしたいEmployee
。メソッドの実行後に従業員id
が割り当てられます。entityManager,persist
私はそれ@Cacheable
がAOPのために機能することを知っています。デフォルトでは、employee
メソッドが実行される前にキャッシュに保存されcreateEmployee
ます。
メソッドの実行後に強制的org.springframework.cache.annotation.@Cacheable
にキャッシュに保存する方法は?
スタックトレース:
java - spring @Cacheable with Ehcache、有効なオブジェクトのスペル検索null
私は同様の問題を抱えていますが、時々うまくいきます。説明されているエラーは、たまにしか発生しません。
spring 3.2.5 と ehcache 2.6.5 を使用しています。
例外トレース:
私のキャッシングコードは次のとおりです。
これが発生した場合: tomcat7 をビルドして自動デプロイするようにジェンキンを構成した場合 / maven を使用して Eclipse WS をビルドし、tomcat7 にデプロイした場合。
これが完全に機能する場合: 一度失敗した後、MailFilterServiceImpl.java をいくつかのスペースで編集して、Eclipse で再コンパイルし、tomcat7 サーバーを再起動します。
CI シナリオで動作させる必要があります。
[更新] コンパイラ オプション debug:true を設定すると、この問題を回避できます。最適化されたものには何の発言権もないようです。
spring - Spring 4 キャッシュ キーの生成が期待どおりに機能しない
Spring をバージョン 4 にアップグレードした後、カスタム キー ジェネレーターが機能しなくなりました。移行前は、「生成」メソッドをオーバーライドするコードが実行されていましたが、Spring 4.0.5 に移行した後、コードはまったく実行されません。代わりに、SimpleKeyGenerator が常に実行されることがわかりました。これは春のバグですか?以前のバージョンで使用していたように、generate メソッドを独自のコードでオーバーライドできないのはなぜですか?
ルート コンテキストからのサンプル:
Java キー生成のサンプル (移行前)
}
移行後のサンプルコード
}
追加情報: コードをデバッグした後、「生成」メソッドが呼び出されるたびに、SimpleKeyGenerator でのみ実行され、カスタム CacheKeyGenerator クラスでは実行されないことがわかりました。理由を理解しようとしたので、デバッグを行いました。デバッグ中に、プライベート プロパティを持つ org.springframework.cache.interceptor.CacheAspectSupport クラスがあることがわかりました。このクラスには keyGenerator プロパティのセッター メソッドがあり、コンテキストが開始されると、このセッター メソッドがカスタム CacheKeyGenerator で呼び出されることがわかったので、構成は正しく、構成に問題はないと結論付けました。また、キーの生成が必要な場合、keyGenerator プロパティが「CacheKeyGenerator」の値を「失い」、「