{"id":730,"date":"2022-08-11T11:02:07","date_gmt":"2022-10-09T12:41:13","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/uncategorized\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/"},"modified":"2024-03-11T14:47:57","modified_gmt":"2024-03-11T14:47:57","slug":"spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/","title":{"rendered":"Spring WebFlux the Spring Reactive Programming"},"content":{"rendered":"<p>Spring WebFlux, introduced in Spring 5, is a fresh module that marks the initial move towards incorporating a reactive programming model into the spring framework.<\/p>\n<h2>Reactive Programming during the Spring-time<\/h2>\n<p>If you are unfamiliar with the reactive programming model, I strongly recommend reading the following articles to gain understanding of it.<\/p>\n<ul class=\"post-ul\">\n<li>Reactive Manifesto<\/li>\n<li>Reactive Streams<\/li>\n<li>Java 9 Reactive Streams<\/li>\n<li>RxJava<\/li>\n<\/ul>\n<p>If you are not familiar with Spring 5, it is recommended that you review the Spring 5 Features.<\/p>\n<h2>Spring WebFlux is a <a href=\"https:\/\/docs.spring.io\/spring-framework\/reference\/web-reactive.html\">reactive web framework<\/a> provided by Spring.<\/h2>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/655ccde8c40ba52feef2849b\/6-0.png\" alt=\"spring webflux and spring mvc\" \/><\/div>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>Mono implements the Publisher interface and returns either 0 or 1 element.<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>Flux implements the Publisher interface and returns multiple (N) elements.<\/ol>\n<h2>Example of a Hello World application using Spring WebFlux<\/h2>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/655ccde8c40ba52feef2849b\/9-0.png\" alt=\"spring webflux example\" \/><\/div>\n<h3>Dependencies for Spring WebFlux in Maven.<\/h3>\n<pre class=\"post-pre\"><code>&lt;project xmlns=\"https:\/\/maven.apache.org\/POM\/4.0.0\" xmlns:xsi=\"https:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:schemaLocation=\"https:\/\/maven.apache.org\/POM\/4.0.0 https:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;\r\n  &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\r\n  &lt;groupId&gt;com.scdev.spring&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;SpringWebflux&lt;\/artifactId&gt;\r\n  &lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\r\n  &lt;name&gt;Spring WebFlux&lt;\/name&gt;\r\n  &lt;description&gt;Spring WebFlux Example&lt;\/description&gt;\r\n  \r\n      &lt;properties&gt;\r\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\r\n        &lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\r\n        &lt;jdk.version&gt;1.9&lt;\/jdk.version&gt;\r\n    &lt;\/properties&gt;\r\n    \r\n  &lt;parent&gt;\r\n\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t&lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\r\n\t\t&lt;version&gt;2.0.1.RELEASE&lt;\/version&gt;\r\n\t\t&lt;relativePath\/&gt; &lt;!-- lookup parent from repository --&gt;\r\n\t&lt;\/parent&gt;\r\n\r\n\t&lt;dependencies&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;spring-boot-starter-webflux&lt;\/artifactId&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\r\n\t\t\t&lt;scope&gt;test&lt;\/scope&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;io.projectreactor&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;reactor-test&lt;\/artifactId&gt;\r\n\t\t\t&lt;scope&gt;test&lt;\/scope&gt;\r\n\t\t&lt;\/dependency&gt;\r\n    &lt;\/dependencies&gt;\r\n\t&lt;repositories&gt;\r\n\t\t&lt;repository&gt;\r\n\t\t\t&lt;id&gt;spring-snapshots&lt;\/id&gt;\r\n\t\t\t&lt;name&gt;Spring Snapshots&lt;\/name&gt;\r\n\t\t\t&lt;url&gt;https:\/\/repo.spring.io\/snapshot&lt;\/url&gt;\r\n\t\t\t&lt;snapshots&gt;\r\n\t\t\t\t&lt;enabled&gt;true&lt;\/enabled&gt;\r\n\t\t\t&lt;\/snapshots&gt;\r\n\t\t&lt;\/repository&gt;\r\n\t\t&lt;repository&gt;\r\n\t\t\t&lt;id&gt;spring-milestones&lt;\/id&gt;\r\n\t\t\t&lt;name&gt;Spring Milestones&lt;\/name&gt;\r\n\t\t\t&lt;url&gt;https:\/\/repo.spring.io\/milestone&lt;\/url&gt;\r\n\t\t\t&lt;snapshots&gt;\r\n\t\t\t\t&lt;enabled&gt;false&lt;\/enabled&gt;\r\n\t\t\t&lt;\/snapshots&gt;\r\n\t\t&lt;\/repository&gt;\r\n\t&lt;\/repositories&gt;\r\n\t&lt;pluginRepositories&gt;\r\n\t\t&lt;pluginRepository&gt;\r\n\t\t\t&lt;id&gt;spring-snapshots&lt;\/id&gt;\r\n\t\t\t&lt;name&gt;Spring Snapshots&lt;\/name&gt;\r\n\t\t\t&lt;url&gt;https:\/\/repo.spring.io\/snapshot&lt;\/url&gt;\r\n\t\t\t&lt;snapshots&gt;\r\n\t\t\t\t&lt;enabled&gt;true&lt;\/enabled&gt;\r\n\t\t\t&lt;\/snapshots&gt;\r\n\t\t&lt;\/pluginRepository&gt;\r\n\t\t&lt;pluginRepository&gt;\r\n\t\t\t&lt;id&gt;spring-milestones&lt;\/id&gt;\r\n\t\t\t&lt;name&gt;Spring Milestones&lt;\/name&gt;\r\n\t\t\t&lt;url&gt;https:\/\/repo.spring.io\/milestone&lt;\/url&gt;\r\n\t\t\t&lt;snapshots&gt;\r\n\t\t\t\t&lt;enabled&gt;false&lt;\/enabled&gt;\r\n\t\t\t&lt;\/snapshots&gt;\r\n\t\t&lt;\/pluginRepository&gt;\r\n\t&lt;\/pluginRepositories&gt;\r\n    &lt;build&gt;\r\n        &lt;plugins&gt;\r\n            &lt;plugin&gt;\r\n                &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n                &lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\r\n            &lt;\/plugin&gt;\r\n        &lt;\/plugins&gt;\r\n        &lt;pluginManagement&gt;\r\n            &lt;plugins&gt;\r\n                &lt;plugin&gt;\r\n                    &lt;groupId&gt;org.apache.maven.plugins&lt;\/groupId&gt;\r\n                    &lt;artifactId&gt;maven-compiler-plugin&lt;\/artifactId&gt;\r\n                    &lt;version&gt;3.7.0&lt;\/version&gt;\r\n                    &lt;configuration&gt;\r\n                        &lt;source&gt;${jdk.version}&lt;\/source&gt;\r\n                        &lt;target&gt;${jdk.version}&lt;\/target&gt;\r\n                    &lt;\/configuration&gt;\r\n                &lt;\/plugin&gt;\r\n            &lt;\/plugins&gt;\r\n    &lt;\/pluginManagement&gt;\r\n    &lt;\/build&gt;\r\n    \r\n&lt;\/project&gt;\r\n<\/code><\/pre>\n<p>The pivotal dependencies are spring-boot-starter-webflux and spring-boot-starter-parent, while other dependencies serve for the creation of JUnit test scenarios.<\/p>\n<h3>Spring WebFlux Handler can be rephrased as &#8220;Handler for Spring WebFlux.&#8221;<\/h3>\n<p>The Handler method of Spring WebFlux manages the request and provides a Mono or Flux as the response.<\/p>\n<pre class=\"post-pre\"><code>package com.scdev.spring.component;\r\n\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.stereotype.Component;\r\nimport org.springframework.web.reactive.function.BodyInserters;\r\nimport org.springframework.web.reactive.function.server.ServerRequest;\r\nimport org.springframework.web.reactive.function.server.ServerResponse;\r\n\r\nimport reactor.core.publisher.Mono;\r\n\r\n@Component\r\npublic class HelloWorldHandler {\r\n\r\n\tpublic Mono&lt;ServerResponse&gt; helloWorld(ServerRequest request) {\r\n\t\treturn ServerResponse.ok().contentType(MediaType.TEXT_PLAIN)\r\n\t\t\t.body(BodyInserters.fromObject(\"Hello World!\"));\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>Take note that the Mono reactive component contains the body of the ServerResponse. Additionally, observe the sequence of functions used to establish the content type, response code, and body of the returned response.<\/p>\n<h3>The Spring WebFlux Router is to be rephrased natively.<\/h3>\n<p>One possible option:<br \/>\nRouter for Spring WebFlux in Spring&#8217;s framework for reactive web applications.<\/p>\n<p>Router methods are employed to establish routes for the application. These methods generate a RouterFunction object which also encapsulates the ServerResponse body.<\/p>\n<pre class=\"post-pre\"><code>package com.scdev.spring.component;\r\n\r\nimport org.springframework.context.annotation.Bean;\r\nimport org.springframework.context.annotation.Configuration;\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.web.reactive.function.server.RequestPredicates;\r\nimport org.springframework.web.reactive.function.server.RouterFunction;\r\nimport org.springframework.web.reactive.function.server.RouterFunctions;\r\nimport org.springframework.web.reactive.function.server.ServerResponse;\r\n\r\n@Configuration\r\npublic class HelloWorldRouter {\r\n\r\n\t@Bean\r\n\tpublic RouterFunction&lt;ServerResponse&gt; routeHelloWorld(HelloWorldHandler helloWorldHandler) {\r\n\r\n\t\treturn RouterFunctions.route(RequestPredicates.GET(\"\/helloWorld\")\r\n                .and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), helloWorldHandler::helloWorld);\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>We have set up a GET endpoint at \/helloWorld which will provide a plain text response when called by the client.<\/p>\n<h3>A Spring Boot Application<\/h3>\n<p>We need to set up our basic WebFlux application using Spring Boot.<\/p>\n<pre class=\"post-pre\"><code>package com.scdev.spring;\r\n\r\nimport org.springframework.boot.SpringApplication;\r\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\r\n\r\n@SpringBootApplication\r\npublic class Application {\r\n\r\n\tpublic static void main(String[] args) {\r\n\t\tSpringApplication.run(Application.class, args);\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>By examining the code above, it is apparent that there is no reference to Spring WebFlux. However, Spring Boot will automatically set up our application as Spring WebFlux because we have included the dependency of the spring-boot-starter-webflux module.<\/p>\n<h3>Support for Java 9 Modules<\/h3>\n<p>If you are using Java 8, our application is prepared to run. However, if you are using Java 9, we will also need to incorporate the module-info.java class.<\/p>\n<pre class=\"post-pre\"><code>module com.scdev.spring {\r\n    requires reactor.core;\r\n    requires spring.web;\r\n    requires spring.beans;\r\n    requires spring.context;\r\n    requires spring.webflux;\r\n    requires spring.boot;\r\n    requires spring.boot.autoconfigure;\r\n    exports com.scdev.spring;\r\n}\r\n<\/code><\/pre>\n<h3>Starting the Spring WebFlux Spring Boot Application.<\/h3>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/655ccde8c40ba52feef2849b\/29-0.png\" alt=\"Eclipse run as spring boot app\" \/><\/div>\n<pre class=\"post-pre\"><code>2018-05-07 15:01:47.893  INFO 25158 --- [           main] o.s.w.r.f.s.s.RouterFunctionMapping      : Mapped ((GET &amp;&amp; \/helloWorld) &amp;&amp; Accept: [text\/plain]) -&gt; com.scdev.spring.component.HelloWorldRouter$$Lambda$501\/704766954@6eeb5d56\r\n2018-05-07 15:01:48.495  INFO 25158 --- [ctor-http-nio-1] r.ipc.netty.tcp.BlockingNettyContext     : Started HttpServer on \/0:0:0:0:0:0:0:0:8080\r\n2018-05-07 15:01:48.495  INFO 25158 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port(s): 8080\r\n2018-05-07 15:01:48.501  INFO 25158 --- [           main] com.scdev.spring.Application        : Started Application in 1.86 seconds (JVM running for 5.542)\r\n<\/code><\/pre>\n<p>Based on the logs, it&#8217;s evident that our application is operational on the Netty server, specifically on port 8080. Now, we can proceed with testing the app.<\/p>\n<h3>Test for a Spring WebFlux application.<\/h3>\n<p>We have the ability to test our app using different techniques.<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>Using the CURL command, you can send a request to the specified URL and receive the response &#8220;Hello World!&#8221;.<\/ol>\n<\/li>\n<\/ol>\n<p>Alternatively, you can launch the URL in a browser.<\/p>\n<p>To test a Rest web service using WebTestClient from Spring 5 reactive web, you can use the provided JUnit test program. This program sends a GET request to the specified URI and checks if the response status is OK and the response body is &#8220;Hello World!&#8221;.<\/p>\n<p>Another option is to use WebClient from Spring Web Reactive to call the REST web service. This program sends a GET request to the specified URI and retrieves the response body as a string.<\/p>\n<p>Running these programs will give you the expected output and any relevant debug messages.<\/p>\n<h2>Please provide the text that you want me to paraphrase.<\/h2>\n<p>This article discussed Spring WebFlux and how to create a basic reactive Restful web service. It&#8217;s great to see that well-known frameworks like Spring are embracing the reactive programming model. However, there is still much to explore because if your dependencies are not reactive and non-blocking, your application cannot be truly reactive. For instance, relational database vendors do not provide reactive drivers as they rely on JDBC, which is not reactive. Thus, Hibernate API is also non-reactive. Consequently, if you are using relational databases, you cannot currently develop a fully reactive application. Nonetheless, I am optimistic that this situation will change in the near future.<\/p>\n<p>The project code is available for download on my GitHub Repository.<\/p>\n<p>Source: Official documentation<\/p>\n<p>Paraphrased: Documentation endorsed by the official source.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>more tutorials<\/p>\n<p><a class=\"LinkSuggestion__Link-sc-1gewdgc-4 cLBplk\" href=\"https:\/\/www.silicloud.com\/blog\/spring-boot-cli\/\" target=\"_blank\" rel=\"noopener\">Spring Boot CLI<span class=\"sc-gswNZR eASTkv\">(Opens in a new browser tab)<\/span><\/a><\/p>\n<p><a class=\"LinkSuggestion__Link-sc-1gewdgc-4 cLBplk\" href=\"https:\/\/www.silicloud.com\/blog\/the-spring-framework\/\" target=\"_blank\" rel=\"noopener\">The Spring Framework<span class=\"sc-gswNZR eASTkv\">(Opens in a new browser tab)<\/span><\/a><\/p>\n<p><a class=\"LinkSuggestion__Link-sc-1gewdgc-4 cLBplk\" href=\"https:\/\/www.silicloud.com\/blog\/spring-mvc-handlerinterceptoradapter-and-handlerinterceptor\/\" target=\"_blank\" rel=\"noopener\">Spring MVC HandlerInterceptorAdapter and HandlerInterceptor.<span class=\"sc-gswNZR eASTkv\">(Opens in a new browser tab)<\/span><\/a><\/p>\n<p><a class=\"LinkSuggestion__Link-sc-1gewdgc-4 cLBplk\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-integrate-playwright-for-react-application-component-testing\/\" target=\"_blank\" rel=\"noopener\">React Application Component Testing Integrate with Playwright<span class=\"sc-gswNZR eASTkv\">(Opens in a new browser tab)<\/span><\/a><\/p>\n<p><a class=\"LinkSuggestion__Link-sc-1gewdgc-4 cLBplk\" href=\"https:\/\/www.silicloud.com\/blog\/spring-component-annotation\/\" target=\"_blank\" rel=\"noopener\">Spring Component annotation<span class=\"sc-gswNZR eASTkv\">(Opens in a new browser tab)<\/span><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring WebFlux, introduced in Spring 5, is a fresh module that marks the initial move towards incorporating a reactive programming model into the spring framework. Reactive Programming during the Spring-time If you are unfamiliar with the reactive programming model, I strongly recommend reading the following articles to gain understanding of it. Reactive Manifesto Reactive Streams [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-730","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Spring WebFlux the Spring Reactive Programming - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Spring WebFlux, introduced in Spring 5, is a fresh module that marks the initial move towards incorporating a reactive programming model\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring WebFlux the Spring Reactive Programming\" \/>\n<meta property=\"og:description\" content=\"Spring WebFlux, introduced in Spring 5, is a fresh module that marks the initial move towards incorporating a reactive programming model\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-09T12:41:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-11T14:47:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/655ccde8c40ba52feef2849b\/6-0.png\" \/>\n<meta name=\"author\" content=\"Olivia Parker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Olivia Parker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/\"},\"author\":{\"name\":\"Olivia Parker\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\"},\"headline\":\"Spring WebFlux the Spring Reactive Programming\",\"datePublished\":\"2022-10-09T12:41:13+00:00\",\"dateModified\":\"2024-03-11T14:47:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/\"},\"wordCount\":724,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/\",\"name\":\"Spring WebFlux the Spring Reactive Programming - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2022-10-09T12:41:13+00:00\",\"dateModified\":\"2024-03-11T14:47:57+00:00\",\"description\":\"Spring WebFlux, introduced in Spring 5, is a fresh module that marks the initial move towards incorporating a reactive programming model\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spring WebFlux the Spring Reactive Programming\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\",\"name\":\"Olivia Parker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"caption\":\"Olivia Parker\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Spring WebFlux the Spring Reactive Programming - Blog - Silicon Cloud","description":"Spring WebFlux, introduced in Spring 5, is a fresh module that marks the initial move towards incorporating a reactive programming model","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/","og_locale":"en_US","og_type":"article","og_title":"Spring WebFlux the Spring Reactive Programming","og_description":"Spring WebFlux, introduced in Spring 5, is a fresh module that marks the initial move towards incorporating a reactive programming model","og_url":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2022-10-09T12:41:13+00:00","article_modified_time":"2024-03-11T14:47:57+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/655ccde8c40ba52feef2849b\/6-0.png"}],"author":"Olivia Parker","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Olivia Parker","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/"},"author":{"name":"Olivia Parker","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9"},"headline":"Spring WebFlux the Spring Reactive Programming","datePublished":"2022-10-09T12:41:13+00:00","dateModified":"2024-03-11T14:47:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/"},"wordCount":724,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/","url":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/","name":"Spring WebFlux the Spring Reactive Programming - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2022-10-09T12:41:13+00:00","dateModified":"2024-03-11T14:47:57+00:00","description":"Spring WebFlux, introduced in Spring 5, is a fresh module that marks the initial move towards incorporating a reactive programming model","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/spring-webflux-refers-to-the-reactive-programming-model-provided-by-the-spring-framework-for-building-web-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Spring WebFlux the Spring Reactive Programming"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9","name":"Olivia Parker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","caption":"Olivia Parker"},"url":"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=730"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/730\/revisions"}],"predecessor-version":[{"id":1846,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/730\/revisions\/1846"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}