我正在尝试使用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>
我正在使用它的代码,
@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
的{{1}}值工作。因此,如果我在5秒内调用该方法,则不会打印该消息,如果我在5秒内调用它,则会调用该方法。但是maximumSize=500,expireAfterAccess=5s
不起作用。它始终打印消息。
任何人都试图设置咖啡因缓存来设置多个缓存。
对于寻找上述问题答案的人来说,只是一个注释,看起来上面的配置确实有用,它一定是其他一些当时对我不起作用的问题。
答案 0 :(得分:1)
我遇到了与缓存配置类似的问题。看来class-path(Guava)中有另一个缓存提供者,它被Spring选择而不是Caffeine。
您必须使用指定哪个缓存提供程序是默认缓存提供程序 spring.cache.type = caffeine 属性。但是你已经用配置bean解决了这个问题。
希望能为其他人节省一些时间。