Spring BootでCaffeineのcacheごとにexpireAfterAccessを指定する

Spring BootのcacheにCaffeineを使っている場合で、cacheごとにmaximumSizeやexpireAfterAccessを指定したいときのメモ。

プロパティのspring.cache.caffeine.specにはcacheごとにexpireAfterAccessなどを設定できないので、SimpleCacheManagerを使うしかなさそう。

@Bean
public SimpleCacheManager cacheManager() {
    SimpleCacheManager cacheManager = new SimpleCacheManager();
    CaffeineCache cache1 =
                new CaffeineCache("cache1",
                                  Caffeine.newBuilder()
                                          .maximumSize(100)
                                          .expireAfterAccess(10, TimeUnit.MINUTES)
                                          .build());
    CaffeineCache cache2 =
                new CaffeineCache("cache2",
                                  Caffeine.newBuilder()
                                          .maximumSize(200)
                                          .expireAfterAccess(20, TimeUnit.MINUTES)
                                          .build());
    cacheManager.setCaches(List.of(cache1, cache2));
    return cacheManager;
}

参考