LoginSignup
1
1

More than 5 years have passed since last update.

CacheManagerを使い分ける

Last updated at Posted at 2018-04-02

用途に応じてCacheManagerの使い分けをしたい。

defaultでConcurrentMapCacheManagerを使い、CacheManagerの指定でRedisCacheManagerを使えるようにする。

Config

@Configuration
public class CacheConfig {

    @Primary
    @Bean
    public CacheManager cacheManager() {
        ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager();
        return cacheManager;
    }

    @Bean
    public CacheManager redisCacheManager(RedisTemplate<String, String> redisTemplate) {
        RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
        cacheManager.setDefaultExpiration(3600);
        return cacheManager;
    }
}

@Primaryがついたものを同じ型のBeanのなかで優先することができます。
逆に指定せずに同じ型のBeanが複数定義されていると起動時に怒られます。

Cache


@Cacheable(cacheNames = "default")
public String default() {
    return "DEFAULT";
}

@Cacheable(cacheNames = "redis", cacheManager = "redisCacheManager")
public String redis() {
    return "REDIS";
}

今回の例だと、cacheManager指定なしでConcurrentMapCacheManagerが使われ
cacheManagerを指定することで、RedisCacheManagerを使うといったことが可能。

応用することで用途に応じてCacheManagerを使い分けができます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1