/* * Copyright (c) 2015. Bearchoke */ package com.bearchoke.platform.persistence.redis.config; import lombok.extern.log4j.Log4j2; import org.springframework.cache.CacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.session.ExpiringSession; import javax.inject.Inject; import java.util.Collections; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Created by Bjorn Harvold * Date: 9/21/14 * Time: 11:52 PM * Responsibility: */ @Configuration @PropertySource("classpath:cache.properties") @Log4j2 public class CacheConfig { @Inject private Environment environment; @Inject private RedisTemplate<String, ExpiringSession> redisTemplate; @Bean public CacheManager cacheManager() { String userTokenCache = environment.getProperty("user.session.cache.name"); Long expiration = environment.getProperty("cache.default.timeout", Long.class); log.info("Creating an initial user token cache called: '" + userTokenCache + "' with expiration time: " + expiration + " seconds"); RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); Map<String, Long> expires = new ConcurrentHashMap<>(1); expires.put(userTokenCache, expiration); cacheManager.setExpires(expires); cacheManager.setDefaultExpiration(expiration); cacheManager.setCacheNames(Collections.singletonList(userTokenCache)); return cacheManager; } }