WebFlux02 SpringBoot WebFlux项目骨架搭建
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 前端访问

WebFlux02 SpringBoot WebFlux项目骨架搭建的更多相关文章
- Maven项目骨架搭建
1. 如何使用Maven的archetype快速生成一个新项目 2. Maven之自定义archetype生成项目骨架(一) 3. 使用maven3 创建自定义的archetype 4. 使用mave ...
- SpringBoot→Maven项目快速搭建
使用软件 :SpringToolSuite4 打开软件后在Package Explorer 栏中点击右键 Spring starter project 等待反应 填写完毕之后点击next fi ...
- springboot web项目创建及自动配置分析(thymeleaf+flyway)
@ 目录 源码分析 webjars thymeleaf thymeleaf语法 springmvc 启动配置原理 集成flyway插件 springboot 创建web项目只需要引入对应的web-st ...
- 快速搭建react项目骨架(按需加载、redux、axios、项目级目录等等)
一.前言 最近整理了一下项目骨架,顺便自定义了一个脚手架,方便日后使用.我会从头开始,步骤一步步写明白,如果还有不清楚的可以评论区留言.先大致介绍一下这个骨架,我们采用 create-react-ap ...
- 手把手教你从零开始搭建SpringBoot后端项目框架
原料 新鲜的IntelliJ IDEA.一双手.以及电脑一台. 搭建框架 新建项目 打开IDE,点击File -> New Project.在左侧的列表中的选择Maven项目,点击Next. 填 ...
- SpringBoot学习(一)—— web项目基础搭建
首先我们在浏览器打开这个网站 https://start.spring.io/ 打开后可以看到以下页面 在这里我们可以快速搭建一个SpringBoot基础项目,填写和选择完相应的信息后,我们点击那个绿 ...
- eclipse搭建springboot的项目
记录一次自己搭建springboot的经历 springboot项目创建 这里借用别的博主分享的方法 https://blog.csdn.net/mousede/article/details/812 ...
- WebFlux03 SpringBoot WebFlux实现CRUD
1 准备 基于SpringBoot2.0搭建WebFlux项目,详情请参见三少另外一篇博文 2 工程结构 <?xml version="1.0" encoding=" ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
随机推荐
- ubuntu 上查看文件的内容,二进制形式展现
Vim 可以用来查看和编辑二进制文件 vim -b egenea-base.ko 加上-b参数,以二进制打开 然后输入命令 :%!xxd -g 1 切换到十六进制模式显示
- 解决跨域POST登录中IE不能正常工作的bug
结合我的这篇blog <简单实用的跨域表单POST提交> 文章,这篇blog中的思路是解决在www.a.com站中登录 同时要把关联站www.b.com登录状态也设置成登录状态,在a中获取 ...
- Linux下shell命令 1
1 [root@hadoop-namenode-1 iebd] cd /filename/filename 跳转至filename文件夹 2 [root@hadoop-namenode-1 ...
- fir分布式滤波的fpga实现
此设计的结构包括:1.移位寄存器链,n阶的有n-1个寄存器. 2.第一次累加部分.由fir滤波系数对称可得到对称的寄存器相加可以减小电路规模,所以第一次累加很有必要. 3,锁存并移位部分.此部分是为了 ...
- DD测磁盘读写性能
1.测试磁盘的纯写入性能 dd if=/dev/zero of=/file [oracle@11g ~]$ touch ddTest[oracle@11g ~]$ time dd if=/dev/ze ...
- mybatis-generator的坑
有天发现mybatis-generator不能用,要加什么根项目前缀, 搞到我重新从github下载,然后发现仓库用不了,原来新项目会改我的maven配置(新坑 后来终于明白要在子项目栏使用手脚架,就 ...
- RK3288 Android5.1系统编译
输入指令时一定要注意当前路径 1.编译之前需要安装JDK7,并配置JAVA环境变量. xxx@build:~/RK3288$ export JAVA_HOME=/usr/lib/jvm/java-7- ...
- UniDac 使用日记(转)
UniDAC使用日记 1. UniQuery默认状态为行提交,使用前根据需要设置readonly或cachedupdates属性 2. UniQuery.Filter默认大 ...
- Java [parms/options] range -b 100 -c 10 -i 100 -t 300 -s 180
3 down vote Just run the command java -X and you will get ans of all_ C:\Users\Admin>java -X -Xmi ...
- 【转】 Pro Android学习笔记(九十):了解Handler(4):Worker线程
目录(?)[-] worker线程小例子 小例子代码worker线程通过handler实现与主线程的通信 小例子代码继承Handler代码 小例子代码子线程的Runnable 文章转载只能用于非商业性 ...