以下はspring
にcachename "simpleCache"を持つ簡単なConcurrentHashMap
を自動的に生成するように指示します。キャッシュの自動設定を維持しながらカスタム@キャッシュ可能なキャッシュを追加するにはどうすればよいですか?
@Cachable("simpleCache")
public String simpleCache(String val) {
//...
}
@Cache("selfexpire")
public String selfexpireLookup(String val) {
}
質問:私は定義された自己期限が切れる時間を持っている唯一のキャッシュを、追加したいが、私は使用する他のすべての@Cacheable
のために自動設定スプリングハッシュマップに依存したい場合は何?
以下はキャッシュを作成します。
@Bean
public CaffeineCache selfexpireCache() {
return new CaffeineCache("selfexpire",
Caffeine.newBuilder()
.maximumSize(100)
.expireAfterAccess(1, TimeUnit.HOURS)
.build());
}
しかし:whan私は今、自分のアプリケーションを起動し、他のすべて一度自動設定のキャッシュはで失敗:
java.lang.IllegalArgumentException: Cannot find cache named 'simpleCache' for Builder
...のみcaffeingキャッシュ明示的に設定された作品。
したがって、カスタムキャッシュを明示的に追加している間に、自動設定されたキャッシュを保持するにはどうすればよいですか?
は、もちろん私は手動でこれらの簡単なキャッシュを追加することもできますが、私はそれらを自動設定するために、スプリング好む:
@Bean
public ConcurrentMapCache simpleCache() {
return new ConcurrentMapCache("simpleCache");
}
私は間違っています:selfexpireCacheは期待通りに動作し、カフェインで設定されています。正常に自動設定された 'ConcurrentHashMap'キャッシュ' somecache'はもう初期化されません。明示的にカフェインキャッシュを定義していないキャッシュをまだ初期化するよう春に指示したいと思います。 – membersound
あなたのコメントと編集に基づいて私の回答を書き直しました – dpr
@ mememoundあなたはまだ別の答えを探していますか?この回答のどの部分がうまくいかないか、あまりにも複雑ですか? – dpr