英文:
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<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;
}
答案1
得分: 0
Sure, here's the translation:
配置有点奇怪... 试试这个链接:
https://www.baeldung.com/spring-boot-caffeine-cache
英文:
the configuration is a bit strange.. try this
专注分享java语言的经验与见解,让所有开发者获益!
评论