• Spring WebFlux 基础教程:快速入门


    为什么要创建Spring WebFlux ?

    一方面是需要一个非阻塞的web 技术栈使用少量的线程和硬件资源来处理并发。另一方面就是函数式编程。

    什么是响应式?

    响应式是制围绕响应改变而构建的编程模型。例如,响应I/O事件的网络组件、响应鼠标事件的UI控制器等等。

    快速入门

    本文我们将学习如何快速构建Spring WebFlux 应用,实现一个简单的Http处理。

    一、创建基础项目

    由于Spring WebFlux是基于Spring Framework 5.0,以及Spring Boot 2.0 基于Spring FrameWork 5.0, 所以我们使用Spring Boot 2.0+ 来构建项目。

    Spring 官方提供了 Spring Initializer 工具,帮助我们快速的生成Spring Boot 项目。

    二、将项目导入到 IDEA 中

    pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.5.3</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    	<groupId>com.example</groupId>
    	<artifactId>demo</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>demo</name>
    	<description>Demo project for Spring Boot</description>
    	<properties>
    		<java.version>1.8</java.version>
    	</properties>
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-webflux</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    		<dependency>
    			<groupId>io.projectreactor</groupId>
    			<artifactId>reactor-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    		</plugins>
    	</build>
    
    </project>
    
    三、编写一个HTTP 接口
    • 创建package 为 com.example.springbootdemo.webflux

    • 创建 HelloHandler 类, 内容如下:

      @Component
      public class HelloHandler {
      
        public Mono<ServerResponse> greeting(ServerRequest request) {
          return ServerResponse.ok().bodyValue("Hello World");
        }
      }
      
    • 创建HelloRouter 类,路由规则,内容如下:

      @Configuration
      public class HelloRouter {
      
        @Bean
        public RouterFunction<ServerResponse> routes(HelloHandler helloHandler) {
          return RouterFunctions.route(RequestPredicates.GET("/hello"), helloHandler::greeting);
        }
      }
      
    • 启动主程序,使用Postman工具或者浏览器发起请求:http://localhost:8080/hello,可以看到返回结果:Hello World

    至此使用 Spring WebFlux 构建了一个简单的请求项目。

  • 相关阅读:
    ios9没事,ios7tableviewcell报约束冲突问题
    在导航控制器的rootviewcontroller中push一个控制器 出现view重叠现象
    用mansard对cell的子控件设置约束,并且自动计算cell高度的问题,ios7警告
    textview第一次出现不可滚动文本,但是点击出现键盘,键盘落下,就可以滚动问题
    animateWithDuration 这样的方法,在第二次应用到某个view上动画时间无效问题
    UItoolBar 设置背景颜色
    implicitly declaring library function 'objc_msgSend'with type '(id,SEL,...)' 警告
    侧滑手势移除控制器,pop
    textfield光标消失和故意隐藏需求
    【Debug】IAR右键无法跳转到定义的解决方法
  • 原文地址:https://www.cnblogs.com/lzeffort/p/15063935.html
Copyright © 2020-2023  润新知