我将尝试尽可能简单地解释我的用例。在我的应用程序中调用外部 Web 服务之前,我使用 Spring Webflux WebClient 从令牌提供者请求 oauth 访问令牌,并且我正在缓存该值,以便下次需要时重用它。每当请求失败并出现错误代码 401 时,我想使缓存无效并使用新令牌重试。
一切工作正常,接受我不确定 Mono 的缓存失效。
如果缓存需要失效,存储在布尔变量中是个好主意吗?订阅 auth Mono 时重试时,无效缓存谓词将为 true,这将使缓存无效并完成新请求。
还有其他想法吗?
示例代码:
@Component
public class AccessTokenService {
private final WebClient accessTokenClient;
private final Mono<Token> accessTokenMono;
private final AtomicBoolean cacheInvalidated = new AtomicBoolean();
public AccessTokenService() {
accessTokenClient = WebClient.builder()
.baseUrl("example-token-uri")
.build();
accessTokenMono = initAccessTokenMono();
}
private Mono<Token> initAccessTokenMono() {
return accessTokenClient.post()
.uri(uriBuilder -> uriBuilder
// Some credentials as parameters
.build())
.retrieve()
.bodyToMono(Token.class)
// Always set cache invalidated to false when we get …Run Code Online (Sandbox Code Playgroud) 我想知道如何更改ActionBar的字体.我正在使用Theme AppCompat 23并尝试使用"typeface",尝试使用"titleTextStyle",但没有任何反应,我无法解释为什么......我试图做一个文本样式并改变了字体但是仍然没有结果.我唯一能做的就是用"textColorPrimary"改变标题的颜色.我也无法在规范中找到解决方案.有人能给我一个提示怎么做吗?