CacheConfig.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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 allStockQuotes = new CaffeineCache("allStockQuotes",
  20. Caffeine.newBuilder().expireAfterWrite(5, MINUTES).build());
  21. CaffeineCache stockQuotesQuery = new CaffeineCache("stockQuotesQuery",
  22. Caffeine.newBuilder().expireAfterWrite(5, MINUTES).build());
  23. CaffeineCache stockQuotes = new CaffeineCache("stockQuotes",
  24. Caffeine.newBuilder().expireAfterWrite(5, MINUTES).build());
  25. CaffeineCache stockInfo = new CaffeineCache("stockInfo",
  26. Caffeine.newBuilder().expireAfterWrite(5, MINUTES).build());
  27. SimpleCacheManager manager = new SimpleCacheManager();
  28. manager.setCaches(List.of(exchangeRates, allStockQuotes, stockQuotesQuery, stockQuotes, stockInfo));
  29. return manager;
  30. }
  31. }