Spring XML bean配置两个咖啡因缓存

时间:2017-10-13 00:38:43

标签: java xml spring caching

我正在尝试使用spring xml bean配置来设置咖啡因缓存。 我想要两个不同的缓存,

  1. 存储“id”
  2. 存储“名称”
  3. 我尝试过关注,

    <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不起作用。它始终打印消息。 任何人都试图设置咖啡因缓存来设置多个缓存。

    对于寻找上述问题答案的人来说,只是一个注释,看起来上面的配置确实有用,它一定是其他一些当时对我不起作用的问题。

1 个答案:

答案 0 :(得分:1)

我遇到了与缓存配置类似的问题。看来class-path(Guava)中有另一个缓存提供者,它被Spring选择而不是Caffeine。

您必须使用指定哪个缓存提供程序是默认缓存提供程序 spring.cache.type = caffeine 属性。但是你已经用配置bean解决了这个问题。

希望能为其他人节省一些时间。