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
-