【发布时间】:2017-09-15 23:40:09
【问题描述】:
我在我的 Web 应用程序中使用 Spring Boot 缓存支持,并将 Caffeine 设置为缓存提供程序。
我的项目中有几个缓存,大部分都有共同的配置,但是对于两个特定的缓存我需要设置不同的参数。
在我的application.properties 我有类似的东西:
spring.cache.cache-names=a-cache,b-cache,c-cache, ...
spring.cache.caffeine.spec=maximumSize=200,expireAfterWrite=3600s
这适用于普通缓存。然后我想用自定义参数扩展这个配置。
This post 解释了如何通过@Configuration 类配置缓存,但是使用这种方法我完全覆盖了通用配置。
我需要的是这样的:
@Configuration
public class CacheConfiguration {
@Autowired
private CacheManager cacheManager;
@Bean
public CacheManager cacheManager(Ticker ticker) {
CaffeineCache c1 = new CaffeineCache("my-custom-cache", Caffeine.newBuilder()
.expireAfterWrite(10, TimeUnit.MINUTES)
.maximumSize(400)
.build());
// ...
cacheManager.setCaches(Arrays.asList(..., c1, ... )); // here I'd like to add custom caches...
return cacheManager;
}
}
但是声明一个新的CacheManager bean,“原始”cacheManager 不是自动装配的...
有没有办法实现我所需要的?
【问题讨论】:
-
听起来首选的方法是使用multiple cache managers。
-
@BenManes 我已经尝试扩展
CachingConfigurerSupport类,但它只是返回一个空CacheManager,对我来说不是很有用。我目前正在尝试配置多个缓存管理器,但是按照这种方法来实现我所需要的似乎有点不知所措......谢谢 -
jcache 配置文件可能会更容易。
标签: java spring spring-boot caffeine