Java SpringXMLBean配置两个缓存
我正在尝试使用SpringXMLBean配置设置咖啡因缓存。 我想要两个不同的缓存Java SpringXMLBean配置两个缓存,java,xml,spring,caching,Java,Xml,Spring,Caching,我正在尝试使用SpringXMLBean配置设置咖啡因缓存。 我想要两个不同的缓存 存储“id” 存储“名称” 我试着跟着 <bean id="cacheManager" class="org.springframework.cache.caffeine.CaffeineCacheManager"> <property name="cacheNames"> <set> <value>id</v
<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>
getId()
方法以某种方式按照caffine.spec
值工作,该值在我的项目中为maximumSize=500,expireAfterAccess=5s
。因此,如果我在5秒内调用该方法,它不会打印消息,如果我在5秒内调用它,它将调用该方法。但是getName
不起作用。它会一直打印消息。
任何人都曾尝试设置咖啡因缓存以设置多个缓存
请注意,对于那些正在寻找上述问题答案的人来说,上面的配置似乎确实有效,一定是其他一些问题在当时对我不起作用。我在缓存配置方面也有类似的问题。似乎在类路径(Guava)中有另一个缓存提供程序,它是由Spring而不是Caffine选择的 您必须通过使用指定默认的缓存提供程序 spring.cache.type=caffee属性。然而,您已经用配置bean解决了这个问题
希望这能为其他人节省一些时间。事实上,我无法复制您的问题。我用Spring Boot创建了一个演示项目,这两个缓存在XML配置中都很有吸引力。您确定总是使用相同的键参数调用
getName()
方法吗?@DanielOlszewski这很有趣,不知怎么的,它对我不起作用,所以我继续添加一个配置bean,并以编程的方式完成了它。除了上述问题,我还试图为两个不同的缓存配置不同的ttl。我不知道如何使用Springbean来实现它。用代码做起来容易多了。
@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
}