1 环境搭建

  1.1 版本说明

    jdk -> 1.8

    maven -3.5

    springboot -> 2.0.3

    开发工具 -> IDEA

  1.2 创建项目

    利用 IDEA 或者 start.spring.io 创建一个SpringBoot项目

    1.2.1 选择依赖

      

    1.2.2 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion> <groupId>cn.xiangxu</groupId>
<artifactId>test_demo</artifactId>
<version>0.0.-SNAPSHOT</version>
<packaging>jar</packaging> <name>test_demo</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0..RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-</project.reporting.outputEncoding>
<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-devtools</artifactId>
<!--<scope>runtime</scope>-->
<optional>true</optional>
</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>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build> </project>

2 开发步骤

  2.1 处理器类

    相当于SpringMVC中的service类,主要就是根据不同的请求url执行不同的业务逻辑

    技巧01:编写的处理器类必须被容器所管理

package cn.xiangxu.test_demo.handler;

import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono; /**
* @author 王杨帅
* @create 2018-06-26 9:58
* @desc 相当于springMVC的controller类
**/
@Component
public class StudentHandler { public Mono<ServerResponse> helloStudent(ServerRequest serverRequest) {
return ServerResponse // 响应对象封装
.ok() // 响应码
.contentType(MediaType.TEXT_PLAIN) // 响应类型
.body(BodyInserters.fromObject("这是学生控制类")); // 响应体
} }

StudentHandler.java

  2.2 路由器类

    相当于DispatherServlet,主要就是将不同的请求url和对应的处理器类进行匹配

    技巧01:路由器类相当于一个Java配置类,所以必须添加 @Configuration 注解,并且路由器类中的路由方法返回的对象必须被容器管理,所以必须添加@Bean注解

    技巧02:RouterFunctions的route方法接收两个参数,并返回 RouterFunctions 类型

      》参数一 :请求断言

      》参数二 :处理函数接口【可用lambda表达式代替】

package cn.xiangxu.test_demo.router;

import cn.xiangxu.test_demo.handler.StudentHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.server.RequestPredicates;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.RouterFunctions;
import org.springframework.web.reactive.function.server.ServerResponse; /**
* @author 王杨帅
* @create 2018-06-26 10:02
* @desc
**/
@Configuration
public class StudentRouter {
@Bean
public RouterFunction<ServerResponse> routerHelloStudent(StudentHandler studentHandler) {
return RouterFunctions
.route( // 路由匹配:将请求url路由到对应的处理器
RequestPredicates
.GET("/student/hello") // 请求url
.and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), // 接收的请求数据类型
studentHandler::helloStudent // 处理请求的处理方法
);
/*
代码解释:如果请求是/student/hello时就会调用StudentHandler处理器类中的helloStudent方法进行业务逻辑处理
*/
}
}

StudentRouter.java

  2.3 启动项目

    2.3.1 IDEA启动

      直接运行启动类就可以啦

    2.3.2 打包部署启动

      》打包项目

      

      》运行项目

        进入到项目根目录下的target文件夹后通过 java -jar xxx.jar 就可以运行项目啦

        技巧01:SpringBoot WebFlux 默认集成的是 Netty

        

    2.3.3 前端访问

      

最新文章

  1. python编码问题
  2. MBR与GPT
  3. Realm简单使用小记
  4. ie上 CSS3114: @font-face 未能完成 OpenType 嵌入权限检查。(包括图标无法显示)
  5. bzoj2515 Room
  6. VS2012中数据库架构的比较
  7. python-根据左右值获取城市区域编码
  8. ios UILocalNotification的使用
  9. [转载] 构建微服务:使用API Gateway
  10. 修改IIS文件上传大小限制
  11. Junit单元测试细节
  12. /proc/sys/net/ipv4/
  13. oracle删除当前用户下所有表
  14. Arcgis Engine - 鹰眼(减少闪烁)
  15. struts2笔记12-声明式异常
  16. linux下base命令
  17. 老李推荐:第8章6节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动Monkey 4
  18. Apache安装,亲测成功
  19. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax;问题的解决
  20. Intelij U

热门文章

  1. Image Pyramid (二)
  2. 关于Sublime Text不能在打开方式中显示并且不能被设置成默认打开方式的问题
  3. Linux 下新增用户的流程
  4. upper_bound函数,binary_check函数
  5. Git学习资源收集汇总
  6. verilog中task的用法
  7. 【LIUNX】目录或文件权限,权限授予
  8. break、continue与return的区别
  9. openfaas 架构介绍
  10. (转)java中查找List的快捷小方法