Кэш кофеина с загрузкой spring не работает

#spring-boot #caffeine-cache

Вопрос:

Я настроил сценарий с использованием кэша кофеина, и я не могу заставить его работать, реальный метод всегда вызывается, когда параметры одинаковы. Вот моя конфигурация:

pom.xml

 ... lt;dependencygt;  lt;groupIdgt;org.springframework.bootlt;/groupIdgt;  lt;artifactIdgt;spring-boot-starter-cachelt;/artifactIdgt; lt;/dependencygt; lt;dependencygt;  lt;groupIdgt;com.github.ben-manes.caffeinelt;/groupIdgt;  lt;artifactIdgt;caffeinelt;/artifactIdgt; lt;/dependencygt; ...  

Класс конфигурации для CacheManager

 @Configuration @EnableCaching public class CachingConfig {   public static final String CACHE_NAME = "test";   @Bean  public CacheManager cacheManager() {  CaffeineCacheManager cacheManager = new CaffeineCacheManager(CACHE_NAME);  cacheManager.setCaffeine(caffeineConfig());  return cacheManager;  }   private Caffeine caffeineConfig() {  return Caffeine.newBuilder()  .expireAfterAccess(10, TimeUnit.MINUTES)  .maximumSize(1024 * 1024 * 256);  } }  

А затем класс с кэшируемым методом:

 @CacheConfig(cacheNames = {CachingConfig.CACHE_NAME}) public class MyClass{   @Cacheable  public Object cacheableMethod(String a, String b, Boolean c) {  try {  Thread.sleep(3000);  } catch (InterruptedException e) {  e.printStackTrace();  }  return new Object() }  

Я также попытался добавить имя кэша в кэшируемую аннотацию:

 @Cacheable(value = CachingConfig.CACHE_NAME)  

И переход @EnableCaching к основному классу приложений Spring Boot.

Настоящий метод всегда вызывается.

Есть какие-нибудь идеи о том, что я делаю не так?

Спасибо

Ответ №1:

Метод @Cacheable должен быть расположен внутри @компонента, @Компонента, @Службы…