CacheConfig.java 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package com.danielbohry.stocks.config;
  2. import com.github.benmanes.caffeine.cache.Caffeine;
  3. import org.springframework.cache.CacheManager;
  4. import org.springframework.cache.annotation.EnableCaching;
  5. import org.springframework.cache.caffeine.CaffeineCache;
  6. import org.springframework.cache.support.SimpleCacheManager;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import java.util.List;
  10. import static java.util.concurrent.TimeUnit.HOURS;
  11. import static java.util.concurrent.TimeUnit.MINUTES;
  12. @Configuration
  13. @EnableCaching
  14. public class CacheConfig {
  15. @Bean
  16. public CacheManager cacheManager() {
  17. CaffeineCache exchangeRates = new CaffeineCache("exchangeRates",
  18. Caffeine.newBuilder().expireAfterWrite(6, HOURS).build());
  19. CaffeineCache stockQuotes = new CaffeineCache("stockQuotes",
  20. Caffeine.newBuilder().expireAfterWrite(10, MINUTES).build());
  21. CaffeineCache portfolio = new CaffeineCache("portfolio",
  22. Caffeine.newBuilder().expireAfterWrite(10, MINUTES).build());
  23. SimpleCacheManager manager = new SimpleCacheManager();
  24. manager.setCaches(List.of(exchangeRates, stockQuotes, portfolio));
  25. return manager;
  26. }
  27. }