spring xml bean構成を使用してカフェインキャッシュを設定しようとしています。 私は私が2つのカフェインキャッシュを構成するSpring XML Bean
<bean id="cacheManager" class="org.springframework.cache.caffeine.CaffeineCacheManager">
<property name="cacheNames">
<set>
<value>id</value>
<value>name</value>
</set>
</property>
<property name="cacheSpecification" value="${caffeine.spec}"/>
</bean>
コード、私は次のことをやってみました "名前"
を格納するための "ID"
- を二つの異なるキャッシュを持ちたいですそれを使用して、
@Cacheable(cacheNames = {"id"}) public String getId(final String key){ System.out.println("no id in cache"); //code } @Cacheable(cacheNames = {"name"}) public String getName(final String key){ System.out.println("no name in cache"); //code }
getId()
メソッドは、caffeine.spec
の値として、私のプロジェクトではmaximumSize=500,expireAfterAccess=5s
のように動作します。したがって、5秒以内にメソッドを呼び出すとメッセージは表示されず、5秒以内に呼び出すとメソッドが呼び出されます。しかし、getName
は機能しません。これは常にメッセージを表示します。 誰でもカフェインキャッシュを設定して複数のキャッシュを設定しようとしました。上記の問題の回答を探している人にはちょうど注意してください。上記の設定が実際に動作するように見えますが、当時私にとってはうまくいきませんでした。
実際、問題は再現できません。私はSpring Bootでデモプロジェクトを作成しました。両方のキャッシュがXML設定の魅力として機能します。 'getName()'メソッドを常に同じキーパラメータで呼び出すことはできますか? –
@DanielOlszewski面白いですが、どういうわけか私にとってはうまくいかなかったので、コンフィグレーションBeanを追加して、プログラム的にやりました。上記の問題に加えて私は2つの異なったキャッシュのために異なったttlを設定しようとしていました。私は春の豆を使ってそれを行う方法を理解できませんでした。それをコードで行うほうがずっと簡単でした。 –