gpt4 book ai didi

java - Spring Boot 2.0 中的 RedisCacheManager.setCacheNames

转载 作者:IT王子 更新时间:2023-10-29 06:16:29 27 4
gpt4 key购买 nike

如何在 Spring 2.0 中自定义 RedisCacheManager 实例来专门设置缓存名称和过期时间。

这是我以前在 1.5.x 中工作的代码,但在 2.x 上失败了

public class RedisCacheManagerCustomizer implements CacheManagerCustomizer<RedisCacheManager> {
...
@Override
public void customize(final RedisCacheManager cacheManager) {
final Map<String, Long> expiresMap = new HashMap<>();

expiresMap.put(CacheNames.ACCESS_TOKEN_TO_ENTRY, accessTokenExpirationInSeconds);
expiresMap.put(CacheNames.REFRESH_TOKEN_TO_ENTRY, jwtMaximumLifetimeInSeconds);


// these two no longer work
cacheManager.setCacheNames(expiresMap.keySet());
cacheManager.setExpires(expiresMap);
}
}

最佳答案

你应该能够做到这一点:

public class RedisCacheManagerCustomizer implements CacheManagerCustomizer<RedisCacheManager> {
...
@Override
public void customize(final RedisCacheManager cacheManager) {
setCacheExpiry(cacheManager, CacheNames.ACCESS_TOKEN_TO_ENTRY, accessTokenExpirationInSeconds);
setCacheExpiry(cacheManager, CacheNames.REFRESH_TOKEN_TO_ENTRY, jwtMaximumLifetimeInSeconds);
}

private void setCacheExpiry(RedisCacheManager cacheManager, String name, long expiry) {
((RedisCache) Objects.requireNonNull(cacheManager.getCache(name)))
.getCacheConfiguration().entryTtl(Duration.ofSeconds(expiry));
}
}

恕我直言,新的构建器模式不太有利于定制器的工作方式。看起来这可能是对新构建器模式的疏忽。

关于java - Spring Boot 2.0 中的 RedisCacheManager.setCacheNames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54497982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com