Spring-Webflux是反应式编程,性能提升的同时,对程序员的要求也很多。
如果帮到你,记得点个赞~
第一步
新建项目,JDK需要1.8+。
第二步
选择依赖。选择Spring Reactive Web和Lombok
第三步
开始写逻辑,WebFlux实现有两种方式。
1、注解;2、函数
Spring MVC注解的方式:
/**
* 首页访问,用于压测
*
* @return
*/
@RequestMapping("/")
public void index() {
System.out.println(Thread.currentThread().getName());
Mono.just("成功").subscribeOn(Schedulers.parallel()).subscribe(s -> {
try {
Thread.sleep(3000);
} catch (Exception e) {
}
System.out.println(System.currentTimeMillis() + "/" + Thread.currentThread().getName());
});
}
/**
* 返回一条
* @return
*/
@RequestMapping("/findStudent")
public Mono<Student> findStudent() {
Student student = new Student();
student.setId(1);
student.setName("张三");
return Mono.just(student);
}
/**
* 返回多条
* @return
*/
@RequestMapping("/findList")
public Flux<Student> findList() {
Student student = new Student();
student.setId(1);
student.setName("张三");
Student student2 = new Student();
student2.setId(1);
student2.setName("张三");
return Flux.just(student,student2);
}
函数式编程的方式:
第一步
首先定义一个处理处理请求的Handler
/**
* 定义一个处理器,处理用户请求
*/
@Component
public class TestHandler {
public Mono<ServerResponse> getTest(ServerRequest request) {
Optional<String> name = request.queryParam("name");
System.out.println("姓名:" + name);
return ServerResponse.ok().contentType(MediaType.TEXT_HTML).bodyValue("hello world");
}
}
第二步
定义一个接收请求的Controller
@Configuration
public class ControllerDemo2 {
@Bean
public RouterFunction<ServerResponse> demoRouter(TestHandler testHandler) {
return RouterFunctions.route().GET("/controller2", testHandler::getTest).build();
}
}
基本使用就是这些,下一篇文章我会介绍WebFlux中使用Mongodb + Mysql的集成方式。