{"id":5581,"date":"2024-04-23T23:15:01","date_gmt":"2024-04-23T20:15:01","guid":{"rendered":"https:\/\/rss.eground-zerkalo.com\/?p=5581"},"modified":"2024-04-23T23:15:01","modified_gmt":"2024-04-23T20:15:01","slug":"spring-webflux-masterclass-reactive-microservices-udemy-vinoth-selvaraj","status":"publish","type":"post","link":"https:\/\/rss.eground-zerkalo.com\/?p=5581","title":{"rendered":"Spring WebFlux Masterclass: Reactive Microservices [Udemy] [Vinoth Selvaraj]"},"content":{"rendered":"<h2 class=\"\">Spring WebFlux Masterclass: Reactive Microservices [Udemy] [Vinoth Selvaraj]<\/h2>\n<p> \t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/v14.skladchik.org\/attachments\/webflux1-jpg.1008157\/\" class=\"bbCodeImage LbImage\" alt=\"webflux1.jpg\" \/> \t\t <\/p>\n<p> \u042f\u0437\u044b\u043a \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439<\/p>\n<p> <b>\u0427\u0435\u043c\u0443 \u0432\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c<\/b> <\/p>\n<ul>\n<li>Spring WebFlux<\/li>\n<li>Reactive Microservices<\/li>\n<li>Spring Data Reactive MongoDB<\/li>\n<li>Spring Data R2DBC<\/li>\n<li>Server Sent Events<\/li>\n<li>3 Microservices Development From Scratch<\/li>\n<li>WebClient<\/li>\n<li>Functional Endpoints<\/li>\n<\/ul>\n<p><b>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f<\/b> <\/p>\n<ul>\n<li>\u0417\u043d\u0430\u043d\u0438\u044f \u043e Spring Boot<\/li>\n<li>\u0417\u043d\u0430\u043d\u0438\u044f \u043f\u043e \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e<\/li>\n<li>\u0423\u0434\u043e\u0431\u043d\u043e \u0441 \u0438\u043d\u0434\u0438\u0439\u0441\u043a\u0438\u043c \u0430\u043a\u0446\u0435\u043d\u0442\u043e\u043c <\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u043a\u0443\u0440\u0441\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Spring Boot 3.2.0<\/p>\n<p> \u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u043c \u043a\u0443\u0440\u0441\u0435 \u0432\u044b \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u0435\u0441\u044c \u0432 \u043c\u0438\u0440 Spring WebFlux \u0438 \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. Spring WebFlux \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 Spring Web MVC. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f\u043c \u0432\u044b \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u0442\u0435 \u043d\u0430\u0432\u044b\u043a\u0438 \u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 RESTful API, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a, \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 MongoDB \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Spring Data Reactive, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Spring Data R2DBC \u0434\u043b\u044f \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WebClient, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0439\u0442\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0431\u0435\u0441\u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0439\u0442\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b\/API \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 WebFlux.<\/p>\n<p> \u041a \u043a\u043e\u043d\u0446\u0443 \u044d\u0442\u043e\u0433\u043e \u043a\u0443\u0440\u0441\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043e\u0441\u043d\u0430\u0449\u0435\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0445 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Spring WebFlux.<\/p>\n<p> <b>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u0430<\/b><\/p>\n<p> \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Spring WebFlux <\/p>\n<ul>\n<li>\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 Spring WebFlux<\/li>\n<li>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c Spring Web MVC<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u043d\u0443\u043b\u044f \u0438 \u0438\u0445 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f.<\/li>\n<\/ul>\n<p>\u0420\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 Restful API: <\/p>\n<ul>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 GET, POST, PUT \u0438 DELETE \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Spring WebFlux<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0434\u043b\u044f \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e @ControllerAdvice \u0438 @ExceptionHandler<\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WebFlux<\/li>\n<\/ul>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 <\/p>\n<ul>\n<li>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 API \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a<\/li>\n<li>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/li>\n<\/ul>\n<p>Spring Data Reactive MongoDB:<br \/> \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 CRUD \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 Reactive MongoDB.<\/p>\n<p> \u0412\u0435\u0441\u0435\u043d\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 R2DBC:<br \/> \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 CRUD \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 Reactive Relational DB.<\/p>\n<p> \u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442: <\/p>\n<ul>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WebClient<\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432, \u0444\u0430\u0439\u043b\u043e\u0432 cookie, \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432.<\/li>\n<li>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/li>\n<li>\u0414\u043e\u0441\u0442\u0443\u043f \u043a API \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WebClient<\/li>\n<li>\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f<\/li>\n<\/ul>\n<p>\u0421\u043e\u0431\u044b\u0442\u0438\u044f, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c (SSE): <\/p>\n<ul>\n<li>\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0445 API \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/li>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f push-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u0441 \u0431\u044d\u043a\u044d\u043d\u0434\u0430 \u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434<\/li>\n<li>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c HTML, Bootstrap \u0438 JavaScript.<\/li>\n<\/ul>\n<p>\u0420\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439: <\/p>\n<ul>\n<li>\u041f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u0430<\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e onError<\/li>\n<li>\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430<\/li>\n<li>\u0418\u0437\u0443\u0447\u0430\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Netty<\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432\/API \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WebFlux<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0432\u043e\u0438\u0442\u044c Spring WebFlux \u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043d\u0430\u0432\u044b\u043a\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0445, \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b Spring WebFlux.<\/p>\n<p> <b>\u0414\u043b\u044f \u043a\u043e\u0433\u043e \u044d\u0442\u043e\u0442 \u043a\u0443\u0440\u0441<\/b><br \/> \u041b\u044e\u0431\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\/\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440, \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435\/\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WebFlux.<\/p>\n<p>     \t\u0421\u043f\u043e\u0439\u043b\u0435\u0440: \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \t<b><i>Course Project updated for latest Spring Boot 3.2.0<\/i><\/b><\/p>\n<p> In this comprehensive course, you will dive into the world of <b><i>Spring WebFlux<\/i><\/b> and learn how to harness its power to build <b><i>reactive<\/i><\/b> and high-performance microservices. Spring WebFlux offers a <b><i>non-blocking and event-driven<\/i><\/b> approach that outperforms traditional Spring Web MVC. Through practical examples and hands-on exercises, you will gain the skills and knowledge to develop RESTful APIs, handle exceptions, work with query parameters, leverage functional endpoints, integrate with MongoDB using Spring Data Reactive, utilize Spring Data R2DBC for reactive relational databases, make non-blocking HTTP requests with WebClient, implement server-sent events for real-time updates, and handle blocking drivers\/APIs seamlessly in your WebFlux applications.<\/p>\n<p> By the end of this course, you will be equipped with the tools and techniques to build resilient and efficient microservices using Spring WebFlux.<\/p>\n<p> <b><i>Course Content:<\/i><\/b> <\/p>\n<ol>\n<li>Introduction to Spring WebFlux:\n<ul>\n<li>Understanding the benefits of reactive programming and Spring WebFlux<\/li>\n<li>Performance comparison with traditional Spring Web MVC<\/li>\n<li>Building 3 Microservices from scratch and integrating them<\/li>\n<\/ul>\n<\/li>\n<li>Exposing Reactive Restful APIs:\n<ul>\n<li>Implementing GET, POST, PUT, and DELETE operations with Spring WebFlux<\/li>\n<li>Using Controller annotation for request mapping<\/li>\n<li>Exception handling with @ControllerAdvice and @ExceptionHandler<\/li>\n<li>Handling query parameters with WebFlux<\/li>\n<\/ul>\n<\/li>\n<li>Functional Endpoints:\n<ul>\n<li>Exposing APIs programmatically with functional endpoints<\/li>\n<li>Router Function and Router Config for routing requests<\/li>\n<\/ul>\n<\/li>\n<li>Spring Data Reactive MongoDB:\n<ul>\n<li>Performing CRUD operations with the Reactive MongoDB driver<\/li>\n<\/ul>\n<\/li>\n<li>Spring Data R2DBC:\n<ul>\n<li>Performing CRUD operations with the Reactive Relational DB driver<\/li>\n<\/ul>\n<\/li>\n<li>WebClient:\n<ul>\n<li>Making non-blocking asynchronous HTTP requests with WebClient<\/li>\n<li>Handling headers, cookies, requests, and responses<\/li>\n<li>Managing attributes and exception handling<\/li>\n<li>Accessing streaming APIs using WebClient<\/li>\n<li>Understanding the difference between Exchange and Retrieve methods<\/li>\n<\/ul>\n<\/li>\n<li>Server-Sent Events (SSE):\n<ul>\n<li>Exposing streaming APIs for real-time updates<\/li>\n<li>Implementing push notifications from backend to frontend<\/li>\n<li>Developing frontend using HTML, Bootstrap, and JavaScript<\/li>\n<\/ul>\n<\/li>\n<li>Miscellaneous:\n<ul>\n<li>Making microservices more resilient with the retry pattern<\/li>\n<li>Handling errors using onError<\/li>\n<li>Understanding the Reactive Manifesto<\/li>\n<li>Exploring how Netty works<\/li>\n<li>Handling blocking drivers\/APIs with WebFlux<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Join this course to master Spring WebFlux and unlock the potential of reactive programming for developing highly performant and scalable microservices. Gain the skills necessary to build resilient, efficient, and real-time applications using Spring WebFlux&#039;s non-blocking and event-driven architecture. <br \/> \u0426\u0435\u043d\u0430 1000 \u0440\u0443\u0431<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring WebFlux Masterclass: Reactive Microservices [Udemy] [Vinoth Selvaraj] \u042f\u0437\u044b\u043a \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0427\u0435\u043c\u0443 \u0432\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c Spring WebFlux Reactive Microservices Spring Data Reactive MongoDB Spring Data R2DBC Server Sent Events 3 Microservices Development From Scratch WebClient Functional Endpoints \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0417\u043d\u0430\u043d\u0438\u044f \u043e Spring Boot \u0417\u043d\u0430\u043d\u0438\u044f \u043f\u043e \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0423\u0434\u043e\u0431\u043d\u043e \u0441 \u0438\u043d\u0434\u0438\u0439\u0441\u043a\u0438\u043c \u0430\u043a\u0446\u0435\u043d\u0442\u043e\u043c \u041f\u0440\u043e\u0435\u043a\u0442 \u043a\u0443\u0440\u0441\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Spring [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-5581","post","type-post","status-publish","format-standard","hentry","category-rss"],"_links":{"self":[{"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/posts\/5581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5581"}],"version-history":[{"count":0,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/posts\/5581\/revisions"}],"wp:attachment":[{"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}