ตัวอย่างการเขียน Java Spring-boot WebFlux ซึ่งเป็นการเขียน Spring-boot แบบ Non-Blocking I/O หรือ Asynchronous
หากพบปัญหา หรือ ต้องการให้ทำอะไรเพิ่ม รบกวนช่วยเปิด issue ให้ด้วยน่ะครับ
ขอบคุณครับ :)
- SpringBoot 2 performance — servlet stack vs WebFlux reactive stack
- Spring Boot performance battle: blocking vs non-blocking vs reactive
- https://blog.ippon.tech/spring-5-webflux-performance-tests/
สิ่งที่ต้องรู้ก่อนเขียน Spring-boot Webflux
- java 8+
- Apache Maven
- Reactive Programming ลองอ่านนี่ดูได้ครับ RxJava series - part 1 - ตอน อะไรเอ่ย ReactiveX? ขอบคุณสำหรับบทความครับ
Spring-boot ใช้ Reactor ซึ่งเป็น lib reactive ตัวนึง มีความคล้ายกันกับ ReactiveX สามารถอ่านแทนกันได้ครับ Concept เหมือนกัน - Event Loop
Code บางตัวอาจจะไม่สามารถเอาไป Run ได้เลย เนื่องจากต้องเตรียม environment ต่าง ๆ ให้พร้อมก่อน เช่น Postgresql, Mongodb, Redis เป็นต้น ต้องมี database หรือ data source ปลายทางก่อน
ให้เรียนรู้/ดูตัวอย่างตามลำดับต่อไปนี้
- spring-boot-webflux-helloworld - Hello World!
- spring-boot-webflux-dockerfile - การสร้าง Dockerfile การ Build Image และการ Run Container Spring-boot
- spring-boot-webflux-logging - การ Config และใช้งาน Logging
- spring-boot-webflux-controller - การเขียน Controller
- spring-boot-webflux-form-data - การรับค่าจาก Html Form
- spring-boot-webflux-download-file - การ Download File
- spring-boot-webflux-upload-file - การ Upload File
- spring-boot-webflux-session - พื้นฐานการใช้ Session
- spring-boot-webflux-cookie - พื้นฐานการใช้ Cookie
- spring-boot-webflux-configuration-properties - การอ่าน Config จาก application.properties
- spring-boot-webflux-thymleaf - การใช้ Thymleaf ทำ View (Server Site) Rendering (HTML)
- spring-boot-webflux-filter - การเขียน Filter
- spring-boot-webflux-error-handler - การจัดการ Exception หรือ Error
- spring-boot-webflux-custom-error-handler - การ Custom ตัวจัดการ Exception หรือ Error
- spring-boot-webflux-validation - การ Validate ข้อมูล
- spring-boot-webflux-manual-validation - การ Validate ข้อมูลแบบ Manual
- spring-boot-webflux-custom-validator - การ custom validator
- spring-boot-webflux-scheduling - การ Run Task แบบ Scheduling
- spring-boot-webflux-unit-test - การเขียน Unit Test
- spring-boot-webflux-unit-test-mockito - การเขียน Unit Test + Mockito
- spring-boot-webflux-test-coverage - Test Coverage ด้วย JaCoCo
- spring-boot-webflux-security - พื้นฐานการ Config Spring Security สำหรับทำการ Login
- spring-boot-webflux-custom-login-page - การ custom หน้า login
- spring-boot-webflux-security-authority - การกำหนดสิทธิ์การเข้าถึง
- spring-boot-webflux-postgresql - การเชื่อมต่อ Postgresql (Relational Database)
- spring-boot-webflux-pagination - การทำ Pagination
- spring-boot-webflux-jdbc-template - การเขียน Native Query จาก JDBC Template
- spring-boot-webflux-entity - การเขียน Entity Class
- spring-boot-webflux-simple-service - พื้นฐานการเขียน Service
- spring-boot-webflux-mongodb - การเชื่อมต่อ Mongodb (NoSQL Document Database)
- spring-boot-webflux-mongo-operations - การเขียน Query ผ่าน Mogo Operations
- spring-boot-webflux-redis - การเชื่อมต่อ Redis (Key/Value NoSQL)
ผมจะค่อย ๆ add module ต่าง ๆ เข้าไปเรื่อย ๆ น่ะครับ อาจจะได้วันละ 2-3 modules แล้วแต่เวลาว่าง + ความยากง่ายของ module นั้น ๆ ครับ
- spring-boot-webflux-javadoc - การ Generate Java Document API
- Spring WebFlux Tutorial
- สร้าง Reactive RESTful Web Service ด้วย Spring WebFlux
- สร้าง Reactive RESTful API ด้วย Spring WebFlux และ MongoDB
- Build Criteria Queries with JPA Specification
- Spring Reactive Sample
ขอบคุณสำหรับเจ้าของบทความครับ (Thank you for Article and Reference.)