SpringWebFlux中,用于处理Web服务的控制器写法和SpringMVC是一样的,唯一的不同是控制器方法返回的是Flux或Mono。这篇笔记我们简单介绍SpringWebFlux中控制器的用法。
下面例子代码中,我们的DemoController接收GET请求,返回了一个JSON响应。
package com.gacfox.demo.controller;
import com.gacfox.demo.model.Student;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
@RestController
public class DemoController {
@GetMapping(value = "/getStudent")
public Mono<Student> getStudent() {
Student s = Student.builder()
.studentId("001").name("Tom").age(18).score("A")
.build();
return Mono.just(s);
}
}
虽然写法和SpringMVC类似,但实际上处理流程却大不相同。SpringWebFlux返回的是响应式对象,内部具体执行异步逻辑时会分派到其它的线程,而不会阻塞HTTP处理线程,这样提高了服务器的并发响应能力。