問題タブ [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.
java - Spring Cache からの java.lang.NegativeArraySizeException
この例外は、さまざまなソースから確認されています。春からのキャッシュチェックで発生しています。いずれの場合も、(キャッシュ用の) メソッドに注釈は存在しません。これは断続的に発生し、簡単には再現できません。ClassUtils.getMostSpecificMethod を取得しようとすると、埋め込まれているようです。
エラーメッセージ:
スタックトレース:
spring - @Cacheable が put の代わりに putifAbsent を使用するように Spring を強制する
以下のようにSpringキャッシュを実装しました
および Java 構成ファイル
デフォルトでは、スプリングはキャッシュ インターフェイスで put メソッドを使用して、キャッシュ内の値を更新/配置します。キャッシュが見つからない場合、または一意のユーザー名とパスワードを持つメソッドへの最初のリクエストが null を返し、そのユーザー名とパスワードへの後続のリクエストが返されるように、スプリングに putifabsent メソッドを強制的に使用させるにはどうすればよいですか?ユーザー名を返す必要があります。
java - 春 @Cacheable 継承
次の作業を行う方法は?
サブクラス
およびこれらのオブジェクトのユーザー
それからどこか
なぜこれが失敗するのか
しかし、同じ getMyObjectConcrete は失敗しません。
java - SpringCaching が高速であるのに、AspectJ を使用した Google キャッシュが遅い理由
私はキャッシングメカニズムについて読んでいて、AspectJでSpringCachingを使用してEhCacheのサンプルプロジェクトを作成し、AspectJでSpringCachingを使用してGoogleキャッシュに対してベンチマークしました。私が見つけたものは、私にとって少し驚くべきことです。
注:-Spring Caching つまり、メソッドには @Cacheable/@Caching アノテーションが付けられます。
AspectJ を使用した SpringCaching は高速ですが、AspectJ を使用した Google キャッシュのパフォーマンスは遅くなります。以下は、リクエストの処理にかかった時間の平均です:-
私は初心者なので、確認したいのですが、AspectJ を Spring Caching で使用する必要があるのはなぜですか。AspectJ はどのようにキャッシングを高速化しますか。
以下の投稿もフォローしていますが、AspectJ が本当にキャッシュのパフォーマンスを向上させるかどうかはまだわかりません。 http://architects.dzone.com/articles/cacheable-overhead-spring-0
spring-boot - 各テスト クラスで異なるキャッシュ マネージャーをインスタンス化する
私の Spring-Boot Web アプリケーション プロジェクトでは、Spring Cache を使用してキャッシュを実装しています。で定義された構成キーによって、キャッシュを有効/無効にすることができますapplication.yml
。キャッシュがないことを前提としてテストが記述されている既存のテスト ケースが既にあります。integration-test
したがって、私のプロファイルではデフォルトでキャッシングが無効になっており、初期化するNoOpCacheManager
とすべてのテストが機能します。
また、キャッシング機能を検証するためのテストも書きたいと思っています。CachedControllerTest
すべてのキャッシュ固有のテストが記述されているクラスを作成しました。
問題は私が走るときです
Bean 関数でキャッシュを有効にしたにもかかわらず、キャッシュ マネージャーが初期化されているため、クラスのすべてのテストCachedControllerTest
が失敗しています。NoOpCacheManager
別のプロファイルを作成しようとしましたが、 Bean が初期化されるとリセットされないCachedControllerTest
ため、まだ失敗します。cacheManager
ここに私の CachedControllerTest クラスがあります
アプリケーション.yml
私の要件は、各テスト クラスの cacheManage を再初期化することです。CacheConfig は、適切CacheManager
に初期化できるように実行時に変更する Bean です。
単独でCachedControllerTest
クラス テストを実行すると、キャッシュ マネージャーを NoOpCacheManager に初期化する前に他のテスト クラスが実行されないため、それらはすべてパスします。
この状況を機能させるためのヘルプ/提案を事前に感謝します。
編集 1
Sam の提案に基づいて、 を追加しまし@ActiveProfiles
た。
編集 2
AbstractRestControllerTest クラスの定義
java - メソッドに引数がない場合は @CacheResult を使用します
システムの (めったに変更されない) 構成を返すメソッドがあり、それをキャッシュしたいと考えています。構成はさまざまなデータから構築されているため、個々の部分をキャッシュするのではなく、SystemConfiguration
オブジェクト自体をキャッシュします。
このメソッドには引数がありません。Ehcache に固定キーの「構成」を使用するように指示するにはどうすればよいですか (構成のインスタンスは 1 つしかありません)。を作成する必要がありますか、CacheKeyGenerator
それとももっと簡単な方法がありますか?
java - カスタム CacheResolver が機能しない
使用するキャッシュをランタイムで決定する必要があるため、Spring Boot プロジェクトにカスタムCacheResolver
があります。コンパイル エラーはありませんが、いくつかのテストを実行してカスタムCacheResolver
にブレーク ポイントを配置すると、ステップインすることはありません。それ。
これは、キャッシュの構成クラスです。
ここに私の CacheResolver があります
そして、ここでキャッシュを使用する私のDAO:
CacheResolver
拡張する代わりに実装しようとしAbstractCacheResolver
ましたが、違いはありませんでした。
ありがとうございました。
java - spring Cache を使用したプロパティのキャッシュ
Spring キャッシュを使用してメソッドにキャッシングを実装しようとしています。問題は、このメソッドが初めて実行されないことです。つまり、プロパティが読み込まれていません。@Cacheable アノテーションを削除すると、正常に動作します。私の要件は、新しいプロパティが追加されるたびに、このメソッドを実行してプロパティをロードする必要があることです。それ以外の場合は、キャッシュから返す必要があります。
XML ファイル:
java - Spring キャッシュ抽象化による非同期キャッシュ更新
Spring のキャッシングの抽象化を使用して、古いエントリを返しながらキャッシュに非同期的にエントリを更新させるにはどうすればよいですか?
Spring のキャッシング抽象化を使用して、比較的短い「ソフト」タイムアウトの後、キャッシュ エントリがリフレッシュの対象となるキャッシング システムを作成しようとしています。その後、クエリが実行されると、キャッシュされた値が返され、非同期更新操作が開始されてエントリが更新されます。私も
Guava のキャッシュ ビルダーを使用すると、一定時間後にキャッシュ内のエントリを更新するように指定できます。その後、キャッシュローダーの reload() メソッドを非同期実装でオーバーライドして、新しい値が取得されるまで古いキャッシュ値を返すことができます。ただし、春のキャッシュは、基になる Guava キャッシュの CacheLoader を使用していないようです
Spring のキャッシング抽象化を使用して、この種の非同期キャッシュ リフレッシュを行うことは可能ですか?
明確にするために編集: Guava の CacheBuilder を使用すると、 refreshAfterWrite() を使用して必要な動作を取得できます。例えばGuava Caches Explainedから:
ただし、Spring の @Cacheable 抽象化を使用して refreshAfterWrite() の動作を取得する方法がわかりません。