建造者模式
* 根本思想,不提供原材料,而是一步一步进行组装
* 在 Spring 中最常用的建造者为 RestTemplate 和 WebClient 此处以 WebClient 为例
// 配置类
@Configuration
public class WebClientConfig {
@Bean
public WebClient.Builder webClientBuilder() {
return WebClient.builder();
}
}
// 消息封装类
@Setter
@Getter
public class HttpBinResponse {
private Map<String, String> args;
private Headers headers;
private String origin;
private String url;
@Getter
@Setter
public static class Headers {
private String accept;
@Setter
private String acceptEncoding;
private String host;
private String userAgent;
private String xAmznTraceId;
@JsonProperty("Accept")
public String getAccept() {
return accept;
}
@JsonProperty("Accept-Encoding")
public String getAcceptEncoding() {
return acceptEncoding;
}
@JsonProperty("Host")
public String getHost() {
return host;
}
@JsonProperty("User-Agent")
public String getUserAgent() {
return userAgent;
}
@JsonProperty("X-Amzn-Trace-Id")
public String getXAmznTraceId() {
return xAmznTraceId;
}
}
}
// 控制器
@RestController
public class TestController {
final
WebClient.Builder webClientBuilder;
public TestController(WebClient.Builder webClientBuilder) {
this.webClientBuilder = webClientBuilder;
}
@GetMapping
public Mono<HttpBinResponse> get() {
WebClient webClient = webClientBuilder.build();
return webClient.get() // 根据需要一步一步组装对象
.uri("https://httpbin.org/get")
.retrieve().bodyToMono(HttpBinResponse.class);
}
}
* 此处测试代码较为麻烦,大家手动测试即可