如何解决春季启动,将咖啡因缓存作为令牌存储,刷新和逐出
我目前在Spring Boot应用程序中使用咖啡因作为JWT令牌存储。 令牌的有效期限设置为30分钟。因此,我想在30分钟前主动获取令牌并重新加载缓存,以便后续请求获得新令牌。
以下是我的缓存配置:
cache:
cache-names: token-service
caffeine:
spec: maximumSize=2,expireAfterWrite=30m
以下是我的spring @Cachable,其他spring服务使用它来获取缓存,然后查询需要令牌的外部API。
@Cacheable(cacheNames = { TOKEN_SERVICE_NAME },key = "#root.target.EXTERNAL_API_TOKEN_SERVICE_KEY")
public Token getToken() throws UnsupportedEncodingException {...}
但是间歇性的API请求正在获得“未授权(401)”,这意味着令牌无效。据我了解,当缓存被逐出并再次重新加载条目时,缓存加载将被阻止。
咖啡因是否在内部阻塞线程,直到加载条目?我读过Spring @Cachable不等待阻塞。我已阅读@Cachable中的 sync = true 选项,并希望将 refreshAfterWrite 选项添加到缓存配置中。
@Cacheable(cacheNames = { TOKEN_SERVICE_NAME },key = "#root.target.EXTERNAL_API_TOKEN_SERVICE_KEY",sync=true)
cache:
cache-names: token-service
caffeine:
spec: maximumSize=2,expireAfterWrite=30m,refreshAfterWrite=29m
还要考虑使用@Bean而不是Cacheable来准备缓存。
高度赞赏任何指向上述用法以及有关上下文中的 sync和refreshAfterWrite 操作的指针。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。