摘要:是一個全新的非堵塞的函數式框架,可以用來構建異步的非堵塞的事件驅動的服務。上面是一個簡單的只相應了一個字符串上面是對應的對應的是匹配一個方式的請求,然后調用中的方法向瀏覽器輸出一個文本類型的字符串再來一個例子賬號或密碼錯誤無效
Spring webflux
Spring 5.0 Spring webflux 是一個全新的非堵塞的函數式 Reactive Web 框架,可以用來構建異步的、非堵塞的、事件驅動的服務。
springboot2.0發布不久,最近研究了一下springboot2.0的新特性,其中就發現了webflux。
使用webflux和MVC的區別就是在artifacId后面加上flux
org.springframework.boot spring-boot-starter-parent 2.0.0.RELEASE org.springframework.boot spring-boot-starter-webflux
@RestController public class HelloController { @GetMapping("/hello") public String hello() { return "hello world"; } }
在webflux中有Handler和Router 的概念,分別與springmvc中的controllerr和equest mapper相對應,通俗的將就是handler就是真正處理請求的bean,可以在handler中編寫處理請求的邏輯,而Router就是如何讓請求找到對應的handler中的方法處理,下面我們來實現一個簡單的handler和router。
@Component public class HelloWorldHandler { public MonohelloWorld(ServerRequest request){ return ServerResponse.ok() .contentType(MediaType.TEXT_PLAIN) .body(BodyInserters.fromObject("hello flux")); } }
上面是一個簡單的handler只相應了一個“hello flux” 字符串!
@Configuration public class RouterConfig { @Autowired private HelloWorldHandler helloWorldHandler; @Bean public RouterFunction> helloRouter() { return RouterFunctions.route(RequestPredicates.GET("/hello"), helloWorldHandler::helloWorld); } }
上面是對應的router對應的是匹配一個get方式的/hello請求,然后調用helloWorldHandler中的helloWorld方法向瀏覽器輸出一個文本類型的字符串
再來一個例子
@Component public class UserHandler { @Autowired private ReactiveRedisConnection connection; public MonogetTime(ServerRequest request) { return ServerResponse.ok().contentType(MediaType.TEXT_PLAIN) .body(Mono.just("Now is " + new SimpleDateFormat("HH:mm:ss").format(new Date())), String.class); } public Mono getDate(ServerRequest request) { return ServerResponse.ok().contentType(MediaType.TEXT_PLAIN) .body(Mono.just("Today is " + new SimpleDateFormat("yyyy-MM-dd").format(new Date())), String.class); } public Mono sendTimePerSec(ServerRequest request) { return ServerResponse.ok().contentType(MediaType.TEXT_EVENT_STREAM) .body(Flux.interval(Duration.ofSeconds(1)).map(l -> new SimpleDateFormat("HH:mm:ss").format(new Date())), String.class); } public Mono register(ServerRequest request) { Mono
@Configuration public class RouterConfig { @Autowired private HelloWorldHandler helloWorldHandler; @Bean public RouterFunction> helloRouter() { return RouterFunctions.route(RequestPredicates.GET("/hello"), helloWorldHandler::helloWorld); } @Autowired private UserHandler userHandler; @Bean public RouterFunctiontimerRouter() { return RouterFunctions.route(RequestPredicates.GET("/time"), userHandler::getTime) .andRoute(RequestPredicates.GET("/date"), userHandler::getDate); } @Bean public RouterFunction> routerFunction() { return RouterFunctions.route(RequestPredicates.GET("/hello"), helloWorldHandler::helloWorld) .andRoute(RequestPredicates.POST("/register"), userHandler::register) .andRoute(RequestPredicates.POST("/login"), userHandler::login) .andRoute(RequestPredicates.GET("/times"), userHandler::sendTimePerSec); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74228.html
摘要:響應式編程是基于異步和事件驅動的非阻塞程序,只是垂直通過在內啟動少量線程擴展,而不是水平通過集群擴展。三特性常用的生產的特性如下響應式編程模型適用性內嵌容器組件還有對日志消息測試及擴展等支持。 摘要: 原創出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關注和轉載,保留摘要,謝謝! 02:WebFlux 快速入門實踐 文章工程: JDK...
摘要:使用則需要及以上版本。開發使用框架七系列教程目錄系列教程大綱快速入門實踐實踐整合整合中和實踐整合中實現緩存中實現通信集成測試及部署實戰圖書管理系統 WebFlux 系列教程大綱 一、背景 大家都知道,Spring Framework 是 Java/Spring 應用程序跨平臺開發框架,也是 Java EE(Java Enterprise Edition) 輕量級框架,其 Spring ...
摘要:原文鏈接編程方法論響應式與代碼設計實戰序,來自于微信公眾號次靈均閣正文內容在一月的架構和設計趨勢報告中,響應式編程和函數式仍舊編列在第一季度的早期采納者中。 原文鏈接:《Java編程方法論:響應式RxJava與代碼設計實戰》序,來自于微信公眾號:次靈均閣 正文內容 在《2019 一月的InfoQ 架構和設計趨勢報告》1中,響應式編程(Reactive Programming)和函數式...
摘要:上一章我們提到過與,對于具體的介紹沒說到,這一章我在這里簡單介紹一下,既然提到和,那肯定得提到什么是響應式編程,什么是。 showImg(https://segmentfault.com/img/remote/1460000018819338?w=1024&h=500); 上一章我們提到過Mono 與 Flux,對于具體的介紹沒說到,這一章我在這里簡單介紹一下,既然提到Mono和Flu...
摘要:今天小編就來分享一份華為剛剛首發的響應式微服務實戰這份主要包含響應式微服務架構實現過程中所應具備的技術體系和工程實踐,在組織結構上分如下篇。 今天小編就來分享一份華為剛剛首發的Spring響應式微服務(Spring Boot 2+Spring 5+Spring Cloud實戰)! 這份PDF...
閱讀 3157·2021-09-30 09:47
閱讀 2012·2021-09-22 16:04
閱讀 2280·2021-09-22 15:44
閱讀 2538·2021-08-25 09:38
閱讀 542·2019-08-26 13:23
閱讀 1229·2019-08-26 12:20
閱讀 2813·2019-08-26 11:59
閱讀 1081·2019-08-23 18:40