我在我的 Web 应用程序中使用 Spring Boot 缓存支持,并将Caffeine设置为缓存提供程序。
我的项目中有几个缓存,其中大多数都有共同的配置,但是对于两个特定的缓存我需要设置不同的参数。
在我的application.properties
我有类似的东西:
spring.cache.cache-names=a-cache,b-cache,c-cache, ...
spring.cache.caffeine.spec=maximumSize=200,expireAfterWrite=3600s
这适用于常见的缓存。然后我想用自定义参数扩展这个配置。
这篇文章解释了如何通过@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
不是自动装配的......
有没有办法实现我所需要的?