首页 > 解决方案 > getIfPresent 咖啡因返回 null

问题描述

@Autowired
Cache<Object, Object> caffeineCache; 

private void saveRequestToStorage(String key, Object value) {
 caffeineCache.put(key, value);
}

public Object getObjectFormInStorage(String key) {
return Optional.ofNullable(caffeineCache.getIfPresent(key)).orElseThrow(()
        -> new MbNotFoundException("error.msg.request.storage.not.found"));
}

我在方法 1 中将值缓存并在方法 2 中获取它,但方法在方法 1 中使用相同的键返回 null。任何人都可以帮助我吗?

下面是配置

@Bean
public Caffeine caffeineCacheBuilder(LocalCacheConfigurationProperties properties) {
    return Caffeine.from(properties.getCaffeine().getSpec());
}

@Bean
public Cache<Object, Object> caffeineCache(Caffeine caffeineCacheBuilder) {
    return caffeineCacheBuilder.build();
}

@Bean
public CacheManager localCacheManager(Caffeine caffeineCacheBuilder, LocalCacheConfigurationProperties properties) {
    CaffeineCacheManager cacheManager = new CaffeineCacheManager();
    if (StringUtils.isEmpty(properties.getCacheNames())) {
        cacheManager.setCacheNames(null); // dynamic
    } else {
        cacheManager.setCacheNames(Arrays.asList(properties.getCacheNames()));
    }
    cacheManager.setCaffeine(caffeineCacheBuilder);
    return cacheManager;
}

标签: javaspringcachingcaffeine

解决方案


配置有点奇怪..试试这个

https://www.baeldung.com/spring-boot-caffeine-cache


推荐阅读