Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringXMLBean配置两个缓存_Java_Xml_Spring_Caching - Fatal编程技术网

Java 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

我正在尝试使用SpringXMLBean配置设置咖啡因缓存。 我想要两个不同的缓存

  • 存储“id”
  • 存储“名称”
  • 我试着跟着

    <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
    }