【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
#Java#Spring#WebFlux#WebClient#RestTemplate#
WebClient和RestTemplate性能比较
视频讲解: https://www.bilibili.com/video/av82675791/
服务器端 WebfluxServerApplication.java
package com.example.webfluxserver;
import lombok.extern.log4j.Log4j2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Log4j2
@SpringBootApplication
public class WebfluxServerApplication extends BaseApplication {
public static void main(String[] args) {
SpringApplication.run(WebfluxServerApplication.class, args);
}
@RestController
class EmployeeController {
@GetMapping("employees")
public List<Employee> findAll() throws InterruptedException {
Thread.sleep(5000);
return list;
}
}
}
客户端 WebfluxConsumerApplication.java
package com.example.webfluxconsumer;
import lombok.extern.log4j.Log4j2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.util.Arrays;
import java.util.List;
@Log4j2
@SpringBootApplication
public class WebfluxConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(WebfluxConsumerApplication.class, args);
}
@RestController
class EmployeeController {
@GetMapping(value = "web", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<Employee> findWithWebClient() {
long startTime = System.currentTimeMillis();
Flux<Employee> employeeFlux = WebClient.create("http://localhost:8080/employees")
.get().retrieve().bodyToFlux(Employee.class);
long endTime = System.currentTimeMillis();
long duartion = endTime - startTime;
log.info("webclient took times:{}", duartion);
return employeeFlux;
}
@GetMapping("rest")
public List<Employee> findWithRestTemplate() {
long startTime = System.currentTimeMillis();
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<Employee[]> responseEntity = restTemplate
.getForEntity("http://localhost:8080/employees", Employee[].class);
List<Employee> employeeList = Arrays.asList(responseEntity.getBody());
long endTime = System.currentTimeMillis();
long duartion = endTime - startTime;
log.info("restTemplate took times:{}", duartion);
return employeeList;
}
}
}
公众号,坚持每天3分钟视频学习
来源:oschina
链接:https://my.oschina.net/u/3270570/blog/3155510