Springboot2.0+Spring5.0 react 初体验

springboot2.0 和spring5.0开始支持noblock模式,据官方测试可以对于速度性能没有明显提高,但是对于服务器利用率,可以提高50%以上,对于此种说法是否真的能到这么到,后续进行测试,并且今日dubbo开始开发3.0,将全面使用back pressure的no block技术,也宣布机器利用率能提高50%以上,静待三个月后的结果。

另外spring 官方已经提供了redis、mongodb、kafak等相关reactive驱动,暂时还不支持mysql,因为mysql的事务在react方式里面,很难以实现,不过官方宣称正在做mysql的驱动适配。

Spring 5.0 最低要求java8,因为发型的时候java 9 release版本还没发,所以spring 5.0的基准java版本是8 ,并且提供了对java9中 classpath、module模块的支持。

web 容器支持:

  • Tomcat 8.5+

  • Jetty 9.4+

  • WildFly 10+

  • Netty 4.1+

  • Undertow 1.4+


Springboot2.0+Spring5.0 react 初体验_第1张图片

1、配置直接start.spring.io 下载模板,选择reactive web即可

2、对于web react支持两种方式,对于已有的老旧springMVC项目可以稍微更改Controller 返回既可以运行,下面说一下新式的配置,Spring5.0

 
  
@Bean
public RouterFunction routers() {
  TestHandler controller = new TestHandler();
  return RouterFunctions.route(
      RequestPredicates.GET("/reactor/address").and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), controller::getAddress)
      .and(RouterFunctions.route(
          RequestPredicates.GET("/reactor/address/{name}").and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), controller::getName)
      );
}
Handler如下:
public class TestHandler {

  public  Mono getAddress(ServerRequest request) {
    return ServerResponse.ok().contentType(APPLICATION_JSON_UTF8).syncBody("ooooooooooooooooo2");
  }


  public Mono getName(ServerRequest request) {
    return ServerResponse.ok().contentType(APPLICATION_JSON_UTF8).syncBody("name:" + request.pathVariable("name"));
  }
}




你可能感兴趣的:(java,web,react,springboot)