java - 如何在多个模块/项目中配置多个缓存管理器 spring cache java

标签 java spring-boot caching guava

当前有两个不同的模块假设项目 A 和项目 B。项目 B 导入/使用到项目 A 中。当前项目 B 已经有 CacheManager。

项目B

  public class CacheConfig {

  @Bean 
  public CacheManager cacheManager() {

  // using SimpleCacheManager()

  }
 }

但现在计划出于其他目的在项目 A 中实现 CacheManager。

class SomeCacheConfig{

@Bean 
public CacheManager someCacheManager(){
 // using SimpleCacheManager() 
}

}

加载应用程序时抛出以下异常。

 java.lang.IllegalStateException: No CacheResolver specified, and no unique bean of type CacheManager found. Mark one as primary (or give it the name 'cacheManager') or declare a specific CacheManager to use, that serves as the default one.

你能帮我看看如何在多个模块/项目中实现多个cacheManager吗?

最佳答案

那么好吧。 将 @Primary 放在将用作默认值的 CacheManager bean 上。

@Primary
@Bean(name = "primaryCacheManager")
public CacheManager primaryCacheManager() {
    return new SimpleCacheManager();
}


@Bean(name = "myCacheManager")
public CacheManager myCacheManager() {
    return new SimpleCacheManager();
}

当您想使用另一个(即不是默认值)时,请使用 @Qualifier 注释显式定义 CacheManager bean 的名称。

@Autowired
@Qualifier("myCacheManager")
private CacheManager myCacheManager;

或者如果您使用 annotation base Spring Cache implementation ,您还可以将 CacheManager 名称定义为这些注释的属性

@Cacheable(value = "some",cacheManager = "myCacheManager")
public String getSome(){
    return "";
}

关于java - 如何在多个模块/项目中配置多个缓存管理器 spring cache java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48769886/

相关文章:

java - 从 ATM 机取钱

java - Android TextView 避免超出视野

java - 使用嵌套 for 循环搜索 LinkedHashMap

Spring-Boot Elasticseach EntityMapper 无法 Autowiring

android - 下次请求相同的图像 URL 时,如何强制 Picasso 缓存和使用调整大小的图像

java - 如何使用 eclipse Google 应用引擎让 .jsp 调用方法

将war文件部署到webapps后,Java项目未从tomcat管理器在tomcat服务器上运行?

mysql - 创建bean时出错

ruby-on-rails - 如何在 Rails 中使用多个缓存?

java - 我应该使用 hibernate 二级缓存吗?