【发布时间】:2021-02-12 03:31:33
【问题描述】:
我正在尝试遵循使用 WebClient Builder 自动装配 Webclient 的最佳实践,但有点困惑。
这是我的主要应用程序,我正在其中生成一个 Webclient Builder 并将其自动装配到我的一个服务类中
@SpringBootApplication
public class MyApplication {
@Bean
public WebClient.Builder getWebClientBuilder() {
return WebClient.builder();
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}}
ServiceImpl Class
public class MyServiceImpl implements MyService {
private static final String API_MIME_TYPE = "application/json";
private static final String API_BASE_URL = "http://localhost:8080";
private static final String USER_AGENT = "Spring 5 WebClient";
private static final Logger logger = LoggerFactory.getLogger(MyServiceImpl.class);
@Autowired
private WebClient.Builder webClientBuilder;
@Override
public Mono<Issue> createIssue(Fields field) {
return webClientBuilder.build()
.post()
.uri("/rest/api/")
.body(Mono.just(field), Fields.class)
.retrieve()
.bodyToMono(Issue.class);
}}
我正在尝试使用 BaseURl、DefaultHeader 等构建 webClientBuilder。我尝试在 MyServiceImpl 构造函数中对其进行初始化,但不确定它是否正确。
public MyServiceImpl() {
this.webClientBuilder
.baseUrl(API_BASE_URL).defaultHeader(HttpHeaders.CONTENT_TYPE, API_MIME_TYPE)
.defaultHeader(HttpHeaders.USER_AGENT, USER_AGENT)
.build();
}
我这样做是正确的还是有更好的方法。
目前我有 2 个 ServiceImpls 来调用不同的 API,这就是我尝试在服务本身中设置“baseurl”和其他默认值的原因。
请帮忙。 TIA
【问题讨论】:
标签: java spring-boot spring-webflux spring-webclient