問題タブ [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.

0 投票する
2 に答える
2620 参照

java - Spring Cache からの java.lang.NegativeArraySizeException

この例外は、さまざまなソースから確認されています。春からのキャッシュチェックで発生しています。いずれの場合も、(キャッシュ用の) メソッドに注釈は存在しません。これは断続的に発生し、簡単には再現できません。ClassUtils.getMostSpecificMethod を取得しようとすると、埋め込まれているようです。

エラーメッセージ:

スタックトレース:

0 投票する
1 に答える
1223 参照

spring - @Cacheable が put の代わりに putifAbsent を使用するように Spring を強制する

以下のようにSpringキャッシュを実装しました

および Java 構成ファイル

デフォルトでは、スプリングはキャッシュ インターフェイスで put メソッドを使用して、キャッシュ内の値を更新/配置します。キャッシュが見つからない場合、または一意のユーザー名とパスワードを持つメソッドへの最初のリクエストが null を返し、そのユーザー名とパスワードへの後続のリクエストが返されるように、スプリングに putifabsent メソッドを強制的に使用させるにはどうすればよいですか?ユーザー名を返す必要があります。

0 投票する
1 に答える
1695 参照

java - 春 @Cacheable 継承

次の作業を行う方法は?

サブクラス

およびこれらのオブジェクトのユーザー

それからどこか

なぜこれが失敗するのか

しかし、同じ getMyObjectConcrete は失敗しません。

0 投票する
1 に答える
393 参照

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

0 投票する
1 に答える
2223 参照

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 クラスの定義

0 投票する
1 に答える
2038 参照

java - メソッドに引数がない場合は @CacheResult を使用します

システムの (めったに変更されない) 構成を返すメソッドがあり、それをキャッシュしたいと考えています。構成はさまざまなデータから構築されているため、個々の部分をキャッシュするのではなく、SystemConfigurationオブジェクト自体をキャッシュします。

このメソッドには引数がありません。Ehcache に固定キーの「構成」を使用するように指示するにはどうすればよいですか (構成のインスタンスは 1 つしかありません)。を作成する必要がありますか、CacheKeyGeneratorそれとももっと簡単な方法がありますか?

0 投票する
2 に答える
9412 参照

java - カスタム CacheResolver が機能しない

使用するキャッシュをランタイムで決定する必要があるため、Spring Boot プロジェクトにカスタムCacheResolverがあります。コンパイル エラーはありませんが、いくつかのテストを実行してカスタムCacheResolverにブレーク ポイントを配置すると、ステップインすることはありません。それ。

これは、キャッシュの構成クラスです。

ここに私の CacheResolver があります

そして、ここでキャッシュを使用する私のDAO:

CacheResolver拡張する代わりに実装しようとしAbstractCacheResolverましたが、違いはありませんでした。

ありがとうございました。

0 投票する
1 に答える
2645 参照

java - spring Cache を使用したプロパティのキャッシュ

Spring キャッシュを使用してメソッドにキャッシングを実装しようとしています。問題は、このメソッドが初めて実行されないことです。つまり、プロパティが読み込まれていません。@Cacheable アノテーションを削除すると、正常に動作します。私の要件は、新しいプロパティが追加されるたびに、このメソッドを実行してプロパティをロードする必要があることです。それ以外の場合は、キャッシュから返す必要があります。

XML ファイル:

0 投票する
2 に答える
11882 参照

java - Spring キャッシュ抽象化による非同期キャッシュ更新

Spring のキャッシングの抽象化を使用して、古いエントリを返しながらキャッシュに非同期的にエントリを更新させるにはどうすればよいですか?

Spring のキャッシング抽象化を使用して、比較的短い「ソフト」タイムアウトの後、キャッシュ エントリがリフレッシュの対象となるキャッシング システムを作成しようとしています。その後、クエリが実行されると、キャッシュされた値が返され、非同期更新操作が開始されてエントリが更新されます。私も

Guava のキャッシュ ビルダーを使用すると、一定時間後にキャッシュ内のエントリを更新するように指定できます。その後、キャッシュローダーの reload() メソッドを非同期実装でオーバーライドして、新しい値が取得されるまで古いキャッシュ値を返すことができます。ただし、春のキャッシュは、基になる Guava キャッシュの CacheLoader を使用していないようです

Spring のキャッシング抽象化を使用して、この種の非同期キャッシュ リフレッシュを行うことは可能ですか?

明確にするために編集: Guava の CacheBuilder を使用すると、 refreshAfterWrite() を使用して必要な動作を取得できます。例えば​​Guava Caches Explainedから:

ただし、Spring の @Cacheable 抽象化を使用して refreshAfterWrite() の動作を取得する方法がわかりません。