当前位置: 首页 > 知识库问答 >
问题:

如何在spring-boot中设置两个不同的CacheManager

赫连淳
2023-03-14

我试图用两个CacheManager设置一个spring-boot应用程序,代码如下:

@SpringBootApplication
@EnableCaching
public class TestApplication {
...
}

@Configuration
public class TestGuavaCacheConfig extends CachingConfigurerSupport {
...
}

@Configuration
public class TestRedisCacheConfig extends CachingConfigurerSupport {
...
}

但是当我启动应用程序时,它总是失败,出现以下错误:

由:java.lang.IllegalStateException引起:当预期只有1个CachingConfigurer实现时,发现了2个。重构配置,使CachingConfigurer只实现一次或根本不实现。在org.springframework.cache.annotation.abstractCachingConfiguration.setConfigurers(abstractCachingConfiguration.java:71)~[spring-context-4.2.4.release.jar:4.2.4.release]在sun.reflect.nativeMethodAccessorImpl.invoke0(原生方法)~[na:1.8.0_66]在sun.reflect.nativeMethodAccessorImpl.invoke(Method.java:497)~[na:1.8.0_66]在org.springframework.beans.factory.annotation.autowirednotationbeanPostProcessor$autowiredmethodelement.inject(AutowirednotationbeanPostProcessor.java:654)~[spring-beans-4.2.4.release.jar:4.2.4.release]在ationBeanPostProcessor.PostProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)~[Spring-Beans-4.2.4.release.jar:4.2.4.release]

...省略59个公共帧

似乎spring-boot不能支持两个CacheManager。这是真的吗?

共有1个答案

郑佐
2023-03-14

TL;DRCachingConfigurer用于配置默认缓存设置。

这与Spring Boot无关,该接口(以及相关异常)直接来自Spring框架。

CachingConfigurer允许您指定应用程序应该使用的默认CacheManager。正如异常所述,您不能拥有其中的两个。当然,这并不意味着不能有两个缓存管理器。

 类似资料:
  • 我正在使用处理。我有大约5个。因此,我将spring cloud config server配置为集中配置。它工作得很好。 配置服务器配置 spring.cloud.config.server.native.search-locations=classpath://common-config server.port=8888 现在的问题是,我有两个环境和,并且我创建了和,根据spring文档,我需

  • 流程开始如下: 组件1发送请求 API对其进行处理,如果一切正确,则写入组件2 dB 各种数据处理... 组件2发送请求 API对其进行处理,如果一切正确,则写入组件1 dB 我怎么做这件Spring靴呢?我不需要任何域类,因此我认为我不需要使用JPA。

  • 我有Spring启动应用程序,它是接收静态数据,基于一些业务逻辑,我需要将数据转移到两个不同的kafka集群,它们有自己的kerberos密钥提及的jaas文件。 我已经编写了两个不同的生产者实例,在它们的不同对象实例中具有以下属性。 第二制片人 当我将其作为两个服务启动并仅启用生产者实例时,它可以工作,但当我在单个jar中启用两个实例时,只有一个生产者可以工作,其他生产者会遇到身份验证问题。 我

  • 使用spring-boot-2.1.3、spring-kafka-2.2.4,我希望有两个流配置(例如,拥有不同的application.id,或者连接到不同的集群,等等)。因此,我几乎根据文档定义了第一个流配置,然后添加了第二个流配置,使用了不同的名称,以及第二个StreamsBuilderFactoryBean(也使用了不同的名称): 然而,当我尝试运行该应用程序时,我得到: 在org.spr

  • 如何在NGINX配置中为两个位置设置相同的规则? 我尝试了以下方法 但是nginx reload抛出了这个错误:

  • 问题内容: 我试图将mvc和rest混合在一个单一的spring引导项目中。 我想在一个地方设置所有其余控制器(例如example.com/api)的基本路径(我不想用),而只是用注释每个控制器。 Mvc控制器应可通过example.com/whatever访问 可能吗? (我不使用spring数据休息,只是spring mvc) 问题答案: 使用Spring Boot 1.2+(<2.0),只需