getIfPresent 从缓存中获取值,如果值不存在则返回 null。

huangapple 未分类评论57阅读模式
英文:

getIfPresent caffeine return 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"));
}

i put value to cache in method 1 and get it in method 2 but method return null with same key in method 1.
Anyone can help me?

Below is config

@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;
}
英文:
@Autowired
Cache&lt;Object, Object&gt; caffeineCache; 

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

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

i put value to cache in method 1 and get it in method 2 but method return null with same key in method 1.
Anyone can help me?

Below is config

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

@Bean
public Cache&lt;Object, Object&gt; 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;
}

答案1

得分: 0

Sure, here's the translation:

配置有点奇怪... 试试这个链接:

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

英文:

the configuration is a bit strange.. try this

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

huangapple
  • 本文由 发表于 2020年7月24日 14:32:41
  • 转载请务必保留本文链接:https://java.coder-hub.com/63068085.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定