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 Details

  • 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)
      Instantiates RedisTemplate to use for sending MultiLevelCacheEvictMessage
      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 cache
      multiLevelCacheRedisTemplate - 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 cache
      multiLevelCacheRedisTemplate - to receive messages about evicted entries
      cacheManager - 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