Можно ли установить другую спецификацию на кеш, используя кофеин весенней загрузки?
У меня есть простое загрузочное приложение 1.5.11.RELEASE
с использованием 1.5.11.RELEASE
Boot 1.5.11.RELEASE
с @EnableCaching
в классе Configuration
приложения.
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
application.properties
spring.cache.type=caffeine
spring.cache.cache-names=cache-a,cache-b
spring.cache.caffeine.spec=maximumSize=100, expireAfterWrite=1d
Вопрос
Мой вопрос прост, как можно указать другой размер/срок действия на кеш. Например, возможно, это приемлемо для cache-a
чтобы быть действительным в течение 1 day
. Но cache-b
может быть в порядке в течение 1 week
. Спецификация кеша кофеина, по-видимому, является глобальной для CacheManager
а не для Cache
. Я что-то пропустил? Возможно, есть более подходящий провайдер для моего использования?
Ответы
Ответ 1
Это ваш единственный шанс:
@Bean
public CaffeineCache cacheA() {
return new CaffeineCache("CACHE_A",
Caffeine.newBuilder()
.expireAfterAccess(1, TimeUnit.DAYS)
.build());
}
@Bean
public CaffeineCache cacheB() {
return new CaffeineCache("CACHE_B",
Caffeine.newBuilder()
.expireAfterWrite(7, TimeUnit.DAYS)
.recordStats()
.build());
}
Просто выставьте свои пользовательские кэши в виде бобов. Они автоматически добавляются в CaffeineCacheManager
.
Ответ 2
Я превратил свой первоначальный пиар в отдельный крошечный проект.
Чтобы начать использовать его, просто добавьте последнюю зависимость от Maven Central:
<dependency>
<groupId>io.github.stepio.coffee-boots</groupId>
<artifactId>coffee-boots</artifactId>
<version>2.0.0</version>
</dependency>
Формат свойств следующий:
coffee-boots.cache.spec.myCache=maximumSize=100000,expireAfterWrite=1m
Если конкретная конфигурация не определена, CacheManager
умолчанию использует поведение Spring.