• Stars
    star
    291
  • Rank 142,563 (Top 3 %)
  • Language
    Java
  • Created over 5 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ตัวอย่างการเขียน Java Spring-boot Reactive (WebFlux)

Spring-boot Reactive Example

ตัวอย่างการเขียน Java Spring-boot Reactive (WebFlux) ซึ่งเป็นการเขียน Spring-boot แบบ Non-Blocking I/O หรือ Asynchronous

Reactive Spring

เชิญชวน

อยากเชิญชวน คนที่มีความรู้ความสามารถด้านใดด้านหนึ่งตามที่ตัวเองถนัด ทำตัวอย่างอะไรทำนองนี้ไว้
เพื่อให้ผู้เริ่มต้น หรือมือใหม่ได้มีตัวอย่างอ้างอิงที่สามารถเอาไปประยุกต์ใช้ได้

ตัวผมเองก็ใช้อันนี้สอนน้อง ๆ สอนเด็กฝึกงานที่บริษัท อีกทั้งเอาไว้ทบทวนตัวเองด้วย
กับเห็นว่ามันมีประโยชน์สำหรับทุกคน เลยแชร์ไว้ครับ

ปัญหา / ข้อเสนอแนะ

หากพบปัญหา หรือ ต้องการให้ทำอะไรเพิ่ม รบกวนช่วยเปิด issue หรือ fork/pull request ให้ด้วยน่ะครับ
ขอบคุณครับ :)

การสนันสนุน หรือ Donate

สำหรับคนที่นำ Repository นี้ไปใช้ในการเรียนรู้ หรือสร้างสรรค์ผลงานให้เกิดมูลค่า
ถ้าอยากที่จะสนับสนุนหรือ Support Repository นี้ สามารถทำได้ 3 ทางครับ คือ

  1. ผ่านทาง Prompt Pay QR Code
  2. ผ่านบัญชีธนาคาร
  3. ผ่านทาง Buy Me a Coffee

ทั้งนี้เพื่อเป็นค่ากาแฟ และค่าแพมเพิส (ผ้าอนามัย) ลูกสาวครับ 😍

Prompt Pay QR

บัญชีธนาคาร

ธนาคารไทยพาณิชย์
เลขที่บัญชี 274-214985-3
ชื่อบัญชี นายจิตกร พิทักษ์เมธากุล

By Me a Coffee

คลิกที่ปุ่มนี้

ถ้ามีข้อสงสัยอะไร สามารถ Inbox ไปสอบถามใน Facebook ส่วนตัวได้ครับ
https://www.facebook.com/jittagornp

Spring

https://spring.io

Spring เป็น Framework ฝั่งภาษา Java สำหรับใช้เขียน Web และ Back-end Application ที่ได้รับความนิยมอย่างมากในปัจจุบัน มีระบบนิเวศ หรือ Ecosystem ต่าง ๆ มากมาย ทำให้สามารถนำ Spring ไปใช้สร้างสรรค์ผลงานต่าง ๆ ได้อย่างรวดเร็ว

Spring-boot

https://spring.io/projects/spring-boot

Spring-boot เป็น Subset (Project นึง) ของ Spring Framework เป็นการเอา Ecosystem ต่าง ๆ ของ Spring ที่มีอยู่ มาประกอบร่างรวมกัน เพื่อให้ใช้งาน Spring ได้ง่ายขึ้น โดยมีจุดเด่นดังนี้

  1. สามารถใช้ Spring-boot ทำ Stand Alone หรือ Micro Service Application ได้
  2. มี Embeded Application Server ภายในตัว สามารถ Start ตัวเองได้ โดยไม่ต้องพึ่งพา Application Server จากภายนอก
  3. มีระบบ Auto Configuration
  4. Config ง่าย
  5. ใช้งานง่าย
  6. Deploy ง่าย
  7. อื่น ๆ

Spring-boot มี 2 แบบ คือ

  1. แบบ Servlet Stack
  2. แบบ Reactive Stack

Servlet Stack

  • เป็นการเขียน Code แบบ Blocking I/O
  • ใช้ Web MVC เป็น Base
  • เขียนง่าย ตรงไปตรงมา
  • Application Server จะใช้เทคนิคในการจัดการ Request/Response ด้วย Thread Pool Connection

Reactive Stack

  • เป็นการเขียน Code แบบ Non-Blocking I/O
  • เขียน Code แบบ Reactive (เป็นการเขียนโปรแกรมรูปแบบหนึ่ง ที่ตอบสนองต่อเหตุการณ์ที่เกิดขึ้น)
  • ใช้ WebFlux เป็น Base
  • เขียน/เข้าใจ ยากกว่าแบบ Servlet Stack
  • Application Server จะใช้เทคนิคในการจัดการ Request/Response ด้วย Event Loop
  • กิน Resources (CPU, RAM) น้อยกว่าแบบ Servlet Stack
  • รองรับ Concurrent ได้มากกว่าแบบ Servlet Stack

Spring-boot Reactive

สามารถเขียนได้ 2 แบบ คือ

  1. แบบ Annotated Controllers
  2. แบบ Functional Endpoints

จากตัวอย่าง โดยส่วนมากจะใช้เป็นแบบ Annotated Controllers

เอกสาร Spring-boot Reactive

สำหรับคนที่เขียน Spring-boot ใหม่ ๆ แล้วสงสัยว่า เราจะรู้ได้ยังไงว่าเราสามารถ Config Application Properties อะไรได้บ้าง ให้ดูจากหน้านี้

ข้อแตกต่าง

WebFlux Performance

Prerequisites

สิ่งที่ต้องรู้ก่อนเขียน Spring-boot Reactive

ตัวอย่างการเขียน Reactor

เริ่ม

Code บางตัวอาจจะไม่สามารถเอาไป Run ได้เลย เนื่องจากต้องเตรียม environment ต่าง ๆ ให้พร้อมก่อน เช่น Postgresql, Mongodb, Redis เป็นต้น ต้องมี database หรือ data source ปลายทางก่อน

ให้เรียนรู้/ดูตัวอย่างตามลำดับต่อไปนี้

ปรับ Code เป็น Java 11 แล้ว

รอการปรับ Code เป็น Java 11

More Repositories

1

GoogleCloudPrint

Google Cloud Print (GCP) API for Java
Java
47
star
2

www.jittagornp.me

บทความของ jittagornp.me
18
star
3

kubernetes-demo

Demo Kubernetes ง่าย ๆ บน DOKS หรือ DigitalOcean Kubernetes Service
Java
14
star
4

oauth-old

Java
13
star
5

java-native-websocket-server-example

ตัวอย่างการเขียน WebSocket Server ด้วย Native Java (โดยไม่ใช้ Dependencies ใด ๆ)
Java
10
star
6

distributed-messaging

ตัวอย่าง และแนวทางในการออกแบบระบบการส่งข้อความที่สามารถ Scale ได้
Java
6
star
7

java-defi-sdk

Java SDK สำหรับ Decentralized Finance (Blockchain)
Java
4
star
8

iwallet-app

DeFi Portfolio Rebalancing
3
star
9

income

JSF Primefaces Example
JavaScript
3
star
10

redis-cluster-example

Redis Cluster Example
Java
3
star
11

k6-example

k6s load testing example
JavaScript
3
star
12

iwallet-pro

2
star
13

nginx-example

ตัวอย่างการ Config Nginx แบบต่าง ๆ
Dockerfile
2
star
14

spring-boot-reactive-kafka-example

Java
2
star
15

spring-boot-reactive-redis-pubsub-example

ตัวอย่างการเขียน Spring-boot Reactive Redis Pub/Sub
Java
2
star
16

OSGi-Simple

Using CDI to Inject OSGi Bundles as Services in NetBeans IDE (https://netbeans.org/kb/docs/javaee/maven-osgiservice-cdi.html)
Java
2
star
17

rust-lang

Repository นี้ ไว้สำหรับเรียนรู้ Rust Programming Language
Rust
2
star
18

learning-python

เรียนรู้การเขียนโปรแกรมภาษา Python โดยเริ่มจากศูนย์
Python
2
star
19

index-search-javascript

index-search-javascript
JavaScript
1
star
20

spring-boot-webflux-nuxtjs

Spring-boot WebFlux + Nuxt.js
Vue
1
star
21

cryptozombies

เรียนรู้การเขียน Smart Contract จาก cryptozombies.io
1
star
22

web-api

web-api of pamarin
Java
1
star
23

oauth2-client-sdk

Java
1
star
24

osgi-maven-felix-plugin

example osgi maven felix plugin configuration
Java
1
star
25

interface.js

for define and check implementation of interface javascript
JavaScript
1
star
26

jenkins-pipeline-example

ตัวอย่างการเขียน Jenkins Pipeline
1
star
27

filestore

java library สำหรับ spring framework ใช้เพื่อ อ่าน/เขียน/อัพโหลด (local) file
Java
1
star
28

css-for-redis.io

Google Chrome Extension : Easy to read redis.io documents
CSS
1
star
29

gatling-example

gatling (scala) load testing example
PLSQL
1
star
30

money-reader

สอนน้องๆ ฝึกงาน เขียน TDD (Test Driven Development)
Java
1
star
31

distributed-unique-id-generator

ตัวอย่างการ Generate unique ID สำหรับ Distributed system
Java
1
star
32

spring-ai-example

ตัวอย่างการเขียน Spring boot เพื่อเชื่อมต่อกับ LLM API
Java
1
star
33

llm-setup

1
star
34

learning-ai

เรียนรู้ AI ฉบับคนเริ่มต้น ที่ไม่มีความรู้อะไรเกี่ยวกับ AI เลย
1
star
35

prometheus-example

ตัวอย่าง Prometheus + Grafana
Shell
1
star