スプリングブートを使用した簡単なスプリントブートアプリケーションがあります1.5.11.RELEASE
with @EnableCaching
アプリケーションConfiguration
クラス。
<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>
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
に対してグローバルであるように見えます。何か不足していますか?おそらく、私のユースケースに適したプロバイダーがありますか?
これが唯一のチャンスです。
@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());
}
カスタムキャッシュをBeanとして公開するだけです。これらはCaffeineCacheManager
に自動的に追加されます。
使用を開始するには、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の動作になります。