spring 启动时的咖啡因缓存无法正常工作

Caffeine cache with spring boot not working

我已经设置了一个使用咖啡因缓存的场景,但我无法让它工作,真正的方法总是在参数相同时被调用。这是我的配置:

pom.xml

...
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
</dependency>
...

CacheManager

的配置class
@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);
    }
}

然后 class 使用可缓存的方法:

@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 注释中:

@Cacheable(value = CachingConfig.CACHE_NAME)

并将 @EnableCaching 移动到 Spring 引导主应用程序 class。

真正的方法总是被调用。

我做错了什么?

谢谢

@Cacheable 方法必须位于@Bean、@Component、@Service...