Package io.github.suppie.spring.cache
Class MultiLevelCacheAutoConfiguration
java.lang.Object
io.github.suppie.spring.cache.MultiLevelCacheAutoConfiguration
@Configuration
@AutoConfigureAfter(org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration.class)
@AutoConfigureBefore(org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration.class)
@ConditionalOnProperty(name="spring.cache.type",
                       havingValue="redis")
@EnableConfigurationProperties({org.springframework.boot.autoconfigure.cache.CacheProperties.class,MultiLevelCacheConfigurationProperties.class})
public class MultiLevelCacheAutoConfiguration
extends Object
Autoconfiguration properties for this cache
- 
Field Summary
Fields - 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionio.github.resilience4j.circuitbreaker.CircuitBreakercacheCircuitBreaker(MultiLevelCacheConfigurationProperties cacheProperties) cacheManager(org.springframework.beans.factory.ObjectProvider<org.springframework.boot.autoconfigure.cache.CacheProperties> highLevelCacheProperties, MultiLevelCacheConfigurationProperties cacheProperties, io.github.resilience4j.circuitbreaker.CircuitBreaker circuitBreaker, org.springframework.data.redis.core.RedisTemplate<Object, Object> multiLevelCacheRedisTemplate) org.springframework.boot.actuate.metrics.cache.CacheMeterBinderProvider<MultiLevelCache>org.springframework.data.redis.listener.RedisMessageListenerContainermultiLevelCacheRedisMessageListenerContainer(MultiLevelCacheConfigurationProperties cacheProperties, org.springframework.data.redis.core.RedisTemplate<Object, Object> multiLevelCacheRedisTemplate, MultiLevelCacheManager cacheManager) multiLevelCacheRedisTemplate(org.springframework.data.redis.connection.RedisConnectionFactory connectionFactory) InstantiatesRedisTemplateto use for sendingMultiLevelCacheEvictMessage 
- 
Field Details
- 
CACHE_REDIS_TEMPLATE_NAME
- See Also:
 
 - 
CIRCUIT_BREAKER_NAME
- See Also:
 
 - 
CIRCUIT_BREAKER_CONFIGURATION_NAME
- See Also:
 
 
 - 
 - 
Constructor Details
- 
MultiLevelCacheAutoConfiguration
public MultiLevelCacheAutoConfiguration() 
 - 
 - 
Method Details
- 
multiLevelCacheRedisTemplate
@Bean @ConditionalOnMissingBean(name="multiLevelCacheRedisTemplate") public org.springframework.data.redis.core.RedisTemplate<Object,Object> multiLevelCacheRedisTemplate(org.springframework.data.redis.connection.RedisConnectionFactory connectionFactory) InstantiatesRedisTemplateto use for sendingMultiLevelCacheEvictMessage- Parameters:
 connectionFactory- to use in template- Returns:
 - template to send messages about evicted entries
 
 - 
cacheManager
@Bean public MultiLevelCacheManager cacheManager(org.springframework.beans.factory.ObjectProvider<org.springframework.boot.autoconfigure.cache.CacheProperties> highLevelCacheProperties, MultiLevelCacheConfigurationProperties cacheProperties, @Qualifier("multiLevelCacheCircuitBreaker") io.github.resilience4j.circuitbreaker.CircuitBreaker circuitBreaker, org.springframework.data.redis.core.RedisTemplate<Object, Object> multiLevelCacheRedisTemplate) - Parameters:
 cacheProperties- for multi-level cachemultiLevelCacheRedisTemplate- to send messages about evicted entries- Returns:
 - cache manager for multi-level caching
 
 - 
multiLevelCacheCacheMeterBinderProvider
@Bean @ConditionalOnBean(MultiLevelCacheManager.class) @ConditionalOnClass({io.micrometer.core.instrument.binder.MeterBinder.class,org.springframework.boot.actuate.metrics.cache.CacheMeterBinderProvider.class}) public org.springframework.boot.actuate.metrics.cache.CacheMeterBinderProvider<MultiLevelCache> multiLevelCacheCacheMeterBinderProvider()- Returns:
 - cache meter binder for local level of multi level cache
 
 - 
multiLevelCacheRedisMessageListenerContainer
@Bean public org.springframework.data.redis.listener.RedisMessageListenerContainer multiLevelCacheRedisMessageListenerContainer(MultiLevelCacheConfigurationProperties cacheProperties, org.springframework.data.redis.core.RedisTemplate<Object, Object> multiLevelCacheRedisTemplate, MultiLevelCacheManager cacheManager) - Parameters:
 cacheProperties- for multi-level cachemultiLevelCacheRedisTemplate- to receive messages about evicted entriescacheManager- for multi-level caching- Returns:
 - Redis topic listener to coordinate entry eviction
 
 - 
cacheCircuitBreaker
@Bean(name="multiLevelCacheCircuitBreaker") public io.github.resilience4j.circuitbreaker.CircuitBreaker cacheCircuitBreaker(MultiLevelCacheConfigurationProperties cacheProperties) - Parameters:
 cacheProperties- to get circuit breaker properties for fault tolerance- Returns:
 - circuit breaker to handle Redis connection exceptions and fallback to use local cache
 
 
 -