当前有两个不同的模块假设项目 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/