【发布时间】:2019-01-17 21:40:32
【问题描述】:
我有一个类,其中 token 是它的实例变量。我正在使用 Spring 5-reactive、Java 8 和 SpringBoot2。我正在调用令牌服务并获取 Mono 并将 Mono 的属性 (accessToken) 传递给另一个名为 getToken() 的方法,使用 map 并尝试设置到此实例变量“token”中。 当我按如下方式记录此实例变量的值时:-
logger.info("Verifying Token: "+ token);
我得到空值。由于异步反应式编程,我相信在我对 getToken() 的方法调用之前首先执行此日志记录语句。请帮助我在调用其余语句之前先将此属性设置到此实例变量中,因为我是响应式编程的新手并且仍在学习它。
private String token;
public ExchangeFilterFunction getNewExchangeFilter(Tuple2 <String, WebClient> serviceConnectionDetails,
MultiValueMap <String, String> queryParams) {
logger.info("Calling auth server to get new access token..................");
Mono<AccessToken> accessToken = commerceAccessTokenService.getUserAccessToken(serviceConnectionDetails, queryParams);
accessToken.map(token -> getToken(token.getAccessToken()));
logger.info("Verifying Token: "+ token);
return (clientRequest, exchangeFunction) -> exchangeFunction.exchange(ClientRequest.from(clientRequest)
.header("Authorization", "Bearer " + token)
.build());
}
private Mono<AccessToken> getToken(String token){
logger.info("Get Token: "+ token);
this.token = token;
return Mono.empty();
}
【问题讨论】:
-
getToken对于设置令牌的方法来说是一个非常具有误导性的名称...
标签: spring-boot java-8 spring-webflux