WebFlux 在国外使用的已经非常的多了,在国内用的人还不算多,这和大多数公司所采用的技术有关。随着 java 的发展,我认为函数式编程、响应式编程,像 WebFlux 这种异步的、非阻塞的、事件驱动的服务框架会逐渐流行起来。所以我就开始研究并学习关于 WebFlux 这个框架用法,本文是 WebFlux 系列教程的第一章,欢迎大家关注!
关于 WebFlux 是什么,我就不介绍了,有兴趣的可以去看 Spring 的官网,或者在我的微信公众号里搜相关的视频。另外我在百度百家里也发了一篇文章来介绍它,这里就直接开始撸代码。
下面我们先新建一个 webflux-helloworld 工程。maven 的 pom.xml 配置如下:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
这里的 spring-webflow 我使用的是 2.5.0.RELEASE 的版本。
然后是 WebFluxApplication.java 类,和其他 SpringBoot 启动类一样,代码如下:
@SpringBootApplication public class WebFluxApplication { public static void main(String[] args) { SpringApplication.run(WebFluxApplication.class, args); } }
再接着,我们新建 WebFlux 的 Router 类,类似 SpringMVC 中的 Controller 。代码如下:
@Configuration public class HelloWebFlux { // :www.xttblog.com @Bean public RouterFunction<ServerResponse> helloXttblog(XttblogHandler handler) { return RouterFunctions .route(RequestPredicates.GET("/hello") .and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), handler::helloXttblog); } }
接着创建 Handler 类。XttblogHandler.java 代码如下:
@Component public class XttblogHandler { public Mono<ServerResponse> helloXttblog(ServerRequest request) { return ServerResponse.ok().contentType(MediaType.TEXT_PLAIN) .body(BodyInserters.fromObject("Hello, www.xttblog.com !")); } }
最后运行启动 WebFluxApplication 类。我们在浏览器里输入 http://localhost:8080/hello,即可看到如下的内容:
WebFlux 的端口默认是 8080,在启动的日志中就可以看到。
这里其实有一个问题,我们的 fromObject 方法传递的是一个英文的字符串,如果是一个带有中文的字符串,浏览器就会出现乱码,这时我们该怎么解决呢?做法很简单,我们下章再见!
源码已分享到我的微信公众号,扫描下方二维码,关注“”回复:“webflux“关键字即可免费下载!
参考资料
- 23. WebFlux framework
: » Spring Boot WebFlux 入门之 Hello World
原创文章,作者:6024010,如若转载,请注明出处:https://blog.ytso.com/251864.html