Subversion Repositories SmartDukaan

Rev

Rev 30289 | Rev 31282 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
22009 ashik.ali 1
package com.spice.profitmandi.dao.config;
2
 
30289 amit.gupta 3
import com.fasterxml.jackson.annotation.JsonTypeInfo;
4
import com.fasterxml.jackson.databind.ObjectMapper;
5
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
30213 amit.gupta 6
import com.github.benmanes.caffeine.cache.Caffeine;
30289 amit.gupta 7
import org.springframework.beans.factory.annotation.Autowired;
22009 ashik.ali 8
import org.springframework.cache.CacheManager;
9
import org.springframework.cache.annotation.CachingConfigurerSupport;
10
import org.springframework.cache.annotation.EnableCaching;
30213 amit.gupta 11
import org.springframework.cache.caffeine.CaffeineCacheManager;
22009 ashik.ali 12
import org.springframework.context.annotation.Bean;
13
import org.springframework.context.annotation.Configuration;
30289 amit.gupta 14
import org.springframework.data.redis.cache.RedisCacheConfiguration;
15
import org.springframework.data.redis.cache.RedisCacheManager;
16
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
17
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
18
import org.springframework.data.redis.serializer.RedisSerializationContext;
22009 ashik.ali 19
 
30289 amit.gupta 20
import java.time.Duration;
30213 amit.gupta 21
import java.util.concurrent.TimeUnit;
22009 ashik.ali 22
 
23
@Configuration
24
@EnableCaching
23716 amit.gupta 25
public class CacheConfig extends CachingConfigurerSupport {
26
 
30213 amit.gupta 27
	@Override
22009 ashik.ali 28
	@Bean
30213 amit.gupta 29
	public CacheManager cacheManager() {
30
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
31
		return cacheManager;
30206 amit.gupta 32
	}
33
 
34
	@Bean
30213 amit.gupta 35
	public CacheManager timeoutCacheManager() {
36
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
37
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(5, TimeUnit.MINUTES);
38
		cacheManager.setCaffeine(caffeine);
39
		return cacheManager;
30206 amit.gupta 40
	}
41
 
42
	@Bean
30213 amit.gupta 43
	public CacheManager timeout15CacheManager() {
44
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
45
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(15, TimeUnit.MINUTES);
46
		cacheManager.setCaffeine(caffeine);
47
		return cacheManager;
22009 ashik.ali 48
	}
23716 amit.gupta 49
 
22009 ashik.ali 50
	@Bean
30213 amit.gupta 51
	public CacheManager oneDayCacheManager() {
52
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
53
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(6, TimeUnit.HOURS);
54
		cacheManager.setCaffeine(caffeine);
55
		return cacheManager;
22009 ashik.ali 56
	}
30206 amit.gupta 57
 
30213 amit.gupta 58
 
29854 amit.gupta 59
	@Bean
30213 amit.gupta 60
	public CacheManager twoMintimeoutCacheManager() {
61
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
62
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(2, TimeUnit.MINUTES);
63
		cacheManager.setCaffeine(caffeine);
64
		return cacheManager;
29854 amit.gupta 65
	}
23716 amit.gupta 66
 
23405 amit.gupta 67
	@Bean
30213 amit.gupta 68
	public CacheManager thirtyMinsTimeOutCacheManager() {
69
		CaffeineCacheManager cacheManager = new CaffeineCacheManager();
70
		Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(30, TimeUnit.MINUTES);
71
		cacheManager.setCaffeine(caffeine);
72
		return cacheManager;
30289 amit.gupta 73
 
74
 
23405 amit.gupta 75
	}
22009 ashik.ali 76
 
30206 amit.gupta 77
 
30289 amit.gupta 78
	@Bean
30213 amit.gupta 79
	JedisConnectionFactory jedisConnectionFactory() {
80
		return new JedisConnectionFactory();
81
	}
82
 
83
	@Autowired
84
	ObjectMapper objectMapper;
85
 
22708 amit.gupta 86
	@Bean
30213 amit.gupta 87
	public RedisCacheConfiguration cacheConfiguration() {
88
		return RedisCacheConfiguration.defaultCacheConfig()
89
				.entryTtl(Duration.ofMinutes(120))
90
				.disableCachingNullValues()
91
				.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(
30289 amit.gupta 92
						new GenericJackson2JsonRedisSerializer(
93
								this.getObjectMapper().enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY))));
22708 amit.gupta 94
	}
95
 
30289 amit.gupta 96
	private ObjectMapper getObjectMapper() {
97
		ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());
98
		return mapper;
99
	}
100
 
101
	//Default Cache for 6 hours
23405 amit.gupta 102
	@Bean
30289 amit.gupta 103
	public CacheManager redisCacheManager() {
30206 amit.gupta 104
		return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
30289 amit.gupta 105
				.cacheDefaults(cacheConfiguration().entryTtl(Duration.ofHours(6).minusMinutes(5)))
30206 amit.gupta 106
				.build();
30289 amit.gupta 107
	}
23405 amit.gupta 108
 
30305 amit.gupta 109
	@Bean
110
	public CacheManager redisEternalCacheManager() {
111
		return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(jedisConnectionFactory())
112
				.cacheDefaults(cacheConfiguration().entryTtl(Duration.ZERO))
113
				.build();
114
	}
115
 
22009 ashik.ali 116
}