inflearn logo

[Phiên bản sửa đổi 2023-11-27] Phát triển RESTful Web Services bằng Spring Boot 3.x

Bài giảng này nói về quá trình phát triển ứng dụng RESTful Web Services bằng Spring Boot và bạn có thể tìm hiểu những kiến ​​thức cơ bản cần thiết cho thiết kế REST API.

(4.8) 478 đánh giá

5,015 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

Spring Boot
Spring Boot
REST API
REST API
Spring Boot
Spring Boot
REST API
REST API

Tin tức

8 bài viết

  • kenneth님의 프로필 이미지

    Xin chào. Chúng tôi đã bổ sung một bài giảng bổ sung mới vào khóa học Phát triển dịch vụ LLM thực tế dành cho lập trình viên Spring (Phần 1). Nội dung hướng dẫn tích hợp mô hình ra quyết định Jev của TypeSafe AI mới được công bố vào ứng dụng Spring Boot, với thời lượng khoảng 1 giờ.

    Tại sao thêm nội dung này
    Trong Section 4, chúng ta đã tìm hiểu cách nhận phản hồi của LLM dưới dạng đối tượng Java bằng entity(), cũng như cạm bẫy trong thực tế khi mô hình bọc JSON trong code fence khiến việc phân tích cú pháp bị lỗi. Dù yêu cầu bằng prompt hay tự động hóa bằng entity(), vẫn còn một hạn chế: cuối cùng, đó vẫn là cách "nhờ" LLM trả về đúng định dạng.
    Jev có cách tiếp cận khác. Thay vì viết câu trả lời, nó chọn một đáp án trong số các lựa chọn được định trước và trả về cùng với xác suất. Nói cách khác, định dạng được đảm bảo một cách có cấu trúc. Khi xử lý cùng một đầu vào theo hai cách, chúng ta sẽ hiểu rõ hơn nhiều về những điều cần cân nhắc khi thiết kế "đầu ra có cấu trúc". Vì vậy, tôi đã tổng hợp nội dung này như phần tiếp nối của Section 4.

    Bạn sẽ học gì

    1. Khái niệm về các mô hình Jev và System One: ý nghĩa của việc trả về "quyết định có kiểu dữ liệu được xác định" thay vì văn bản

    2. Sự khác biệt giữa LLM và Jev: câu trả lời tự luận và câu trả lời trắc nghiệm, những việc mỗi bên làm tốt và không làm tốt

    3. Ba loại câu hỏi (choice · score · noul) và cấu trúc yêu cầu /v1/systemone

    4. Gọi từ Spring: gọi API Jev bằng RestClient và tạo các lựa chọn bằng enum Java để chuyển đổi phản hồi một cách an toàn về kiểu dữ liệu

    5. Trình diễn so sánh: phân tích cùng một bài đánh giá phim lần lượt bằng entity() và Jev để so sánh tốc độ, lỗi định dạng, độ tin cậy và tính nhất quán

    Tài liệu được cập nhật cùng nhau

    • Mã ví dụ Phần 4 (ch4): thêm 2 API phân tích bài đánh giá (/api/movies/review/llm, /api/movies/review/jev) và JevClient

    • Slide bài giảng bổ sung và tài liệu giảng dạy

    • Kịch bản kiểm thử so sánh: review-compare.sh dành cho macOS, review-compare.ps1 dành cho Windows

    Điểm cần biết trước

    • Jev không phải là một tính năng của Spring AI mà là một dịch vụ bên ngoài riêng biệt do TypeSafe AI cung cấp. Trong bài giảng, chúng ta cũng gọi trực tiếp bằng RestClient, chứ không phải ChatClient của Spring AI.

    • Hiện tại Jev đang ở giai đoạn truy cập sớm, vì vậy việc cấp khóa API có thể phải chờ. Trong mã ví dụ, tính năng Jev mặc định bị tắt (jev.enabled=false), nên ngay cả khi không có khóa, bạn vẫn có thể tiếp tục các bài thực hành như bình thường. Nếu chưa có khóa, hãy xem phần trình diễn trong video và tập trung theo dõi các khái niệm cùng mã nguồn.

    • Vì đây là dịch vụ mới ra mắt nên giá cả hoặc API có thể thay đổi sau này. Nếu có thay đổi, chúng tôi sẽ thông báo lại qua tin tức mới.

    📌 Truy cập khóa học ngay: https://inf.run/VVpnV

    Nếu trong quá trình học các bài giảng được bổ sung, bạn có bất kỳ thắc mắc nào hoặc gặp khó khăn khi thực hành, hãy thoải mái để lại bình luận. Chúng tôi sẽ tiếp tục bổ sung những nội dung có thể áp dụng ngay vào công việc thực tế.

    0
  • kenneth님의 프로필 이미지

    Xin chào, tôi là Lee Do-won.


    "Tôi đã thử tạo pipeline Jenkins, nhưng mới chỉ nghe qua khái niệm ArgoCD hoặc GitOps."

    "Tôi bối rối không biết nên thiết kế việc triển khai như thế nào cho từng môi trường dev, staging và production."


    Dành cho những ai đang trăn trở như vậy, chúng tôi đã mở khóa học 「Học GitOps CI/CD thực chiến với Jenkins và ArgoCD」 trên Inflearn.


    Khóa học này khác biệt ở những điểm sau


    • Cùng tìm hiểu cả GitOps dựa trên ArgoCD, vượt ra ngoài CI/CD truyền thống dựa trên Jenkins.

    • Trực tiếp so sánh phương thức Push (Jenkins) và phương thức Pull (ArgoCD) trên cùng một cụm Kubernetes. Khi ai đó thay đổi thủ công bằng kubectl, bạn sẽ tận mắt thấy một bên giữ nguyên thay đổi còn bên kia tự động khôi phục, đồng thời trực tiếp cảm nhận sự khác biệt trong cách rollback và kiểm tra lịch sử triển khai.

    • Kết hợp hai phương thức để xây dựng từ đầu đến cuối một quy trình triển khai kết hợp, trong đó dev·staging sử dụng Jenkins Push, còn production sử dụng ArgoCD Pull (phê duyệt Sync thủ công).

    • Thực hành các kỹ thuật triển khai cốt lõi cần thiết cho vận hành, từ Canary, Blue-Green, RBAC, quy trình phê duyệt, ứng phó sự cố cho đến tự động rollback.


    Môi trường thực hành

    Chỉ cần Docker Desktop là có thể thực hiện. Tương thích với cả Windows và macOS, không cần tài khoản đám mây như AWS hay phát sinh chi phí riêng.


    Khóa học này phù hợp với những ai


    • Kỹ sư backend và hạ tầng đã từng sử dụng Jenkins nhưng chưa từng làm quen với ArgoCD/GitOps

    • Những người muốn chuyển việc triển khai Kubernetes từ thao tác thủ công bằng kubectl apply sang tự động hóa

    • Nhân sự DevOps·SRE quan tâm đến các yêu cầu vận hành như phê duyệt triển khai, rollback và theo dõi kiểm toán


    Tổng thời lượng học khoảng 10–11 giờ, đồng thời cung cấp tài liệu thực hành và hướng dẫn khắc phục sự cố.


    👉 Xem khóa học: https://inf.run/dEjZE

    Nếu có điều gì thắc mắc, hãy thoải mái để lại trong phần bình luận hoặc mục Q&A của khóa học nhé!

    0
  • kenneth님의 프로필 이미지

    Lần này, chúng tôi đã mở khóa học mới Phát triển dịch vụ LLM thực chiến dành cho nhà phát triển Spring (Phần 1). Dù có thể hơi muộn một chút, khóa học được xây dựng nhằm giúp bạn học những nội dung cần thiết để phát triển ứng dụng LLM bằng Spring framework quen thuộc với các nhà phát triển Java. Rất mong nhận được sự quan tâm của các bạn.


    Tại sao tôi tạo ra khóa học này?

    Dạo gần đây, những từ khóa như RAG, tìm kiếm vector và tác nhân AI có thể bắt gặp ở khắp nơi, nhưng tài liệu hướng dẫn chuyên sâu ở cấp độ thực tế về việc “tích hợp chúng vào backend Spring Boot như thế nào” lại không nhiều.

    Khóa học này đưa nguyên vẹn vào chương trình những vấn đề tôi từng gặp khi gỡ lỗi endpoint đề xuất RAG thực tế — trải nghiệm chất lượng tìm kiếm bị giảm do ý nghĩa bị phá vỡ khi chia nhỏ tài liệu theo đơn vị token, cũng như quá trình chuyển sang chiến lược chia theo đoạn văn để giải quyết vấn đề. Thay vì chỉ đưa ra đoạn mã đúng như trong các tutorial, khóa học sẽ cùng bạn theo dõi quá trình “tại sao không hoạt động → chẩn đoán như thế nào → khắc phục ra sao”.


    Khóa học này được khuyến nghị cho những người sau đây:

    • Các lập trình viên backend đã có kinh nghiệm với Spring Boot nhưng mới bắt đầu phát triển dịch vụ LLM/AI

    • Các nhà phát triển muốn áp dụng RAG và tìm kiếm vector ở cấp độ dự án thực tế, thay vì chỉ theo các bài hướng dẫn.

    • Những người thực tế cần tự triển khai các tính năng AI nội bộ (chatbot, tìm kiếm tài liệu, đề xuất, v.v.) dựa trên Spring

    Chỉ cần có kinh nghiệm xây dựng REST API bằng Spring Boot là đủ. Không cần có kiến thức nền tảng về AI/LLM.


    Bạn sẽ học gì?

    1. Nền tảng cốt lõi của Spring AI Cách sử dụng cơ bản ChatClient, đầu ra có cấu trúc (Structured Output), triển khai phản hồi streaming

    2. Xây dựng pipeline RAG Tích hợp kho vector, so sánh các chiến lược chia nhỏ tài liệu và xử lý sự cố trong thực tế, cải thiện chất lượng tìm kiếm, thiết kế prompt

    3. Mở rộng công cụ và đa phương thức Tích hợp các công cụ bên ngoài bằng MCP (Model Context Protocol), xử lý đầu vào đa phương thức như hình ảnh, tích hợp Dify

    4. Ổn định dịch vụ và dự án thực tế Áp dụng các biện pháp bảo vệ, thiết kế dịch vụ đáng tin cậy và thực hiện dự án mini tích hợp những nội dung đã học cho đến nay

    Phần phụ lục cũng hướng dẫn cách sử dụng công cụ lập trình AI và Ollama.


    Giới thiệu về loạt bài

    Sản phẩm ra mắt lần này là Part 1 của toàn bộ series. Trong Part 2 và 3, chúng tôi dự kiến sẽ đề cập đến các kiến trúc chuyên sâu hơn và những trường hợp thực tế; khi toàn bộ series được phát hành, chúng tôi cũng dự định chuẩn bị chương trình giảm giá cho trọn bộ.


    📌 Truy cập khóa học: https://inf.run/VVpnV

    Nếu có điều gì thắc mắc hoặc câu hỏi liên quan đến giáo trình, hãy thoải mái để lại bình luận. Thông qua Part 1, tôi muốn cùng các bạn thực hiện bước đầu tiên trong việc tích hợp LLM vào dịch vụ Spring của mình.

    0
  • kenneth님의 프로필 이미지

    Xin chào, đây là Lee Do-won.

    Lần này bài giảng “Phát triển RESTful Web Services sử dụng Spring Boot” đã được cập nhật.

    Chúng tôi đã chuẩn bị lại bài giảng bằng cách thay đổi ví dụ đã viết trước đó ở phiên bản Spring Boot 2.x sang phiên bản Spring Boot 3.1.x mới.

    1. Phần này bao gồm quá trình phát triển API RESTful bằng Spring Boot phiên bản 3.1.

    2. Các ví dụ trong bài giảng đã được nâng cấp lên phiên bản Spring Boot 3.1.

    3. Các ví dụ về Spring Security đã được sửa đổi để phù hợp với phiên bản mới.

    4. Phần Swagger Documentation được giới thiệu để có thể sử dụng phù hợp với Spring Boot 2.7 và Spring Boot 3.1 hiện có.

      • Khởi động mùa xuân 2.7 + springfox 3.0

      • Khởi động mùa xuân 3.1 + springdoc (OAS 3.0)

    5. Chúng tôi đã tạo lại âm thanh bài giảng đã ghi âm đã được nhiều học viên nhắc đến trong bài giảng hiện tại để các bạn có thể nghe lại mà không gặp bất tiện gì.

     

    Chúng tôi yêu cầu bạn quan tâm đến các bài giảng mới được cập nhật.

    Tôi sẽ trở lại với những bài giảng hay trong tương lai.

    Cảm ơn

     

     

    10
  • kenneth님의 프로필 이미지

    Xin chào, đây là Lee Do-won.

    Virus Corona dường như đang dần dịu đi và chúng ta đang trở lại cuộc sống xã hội bình thường.

    Mùa hè năm 2022 đang bắt đầu. Có vẻ như mùa mưa đang bắt đầu và thật khó để nhìn thấy bầu trời trong xanh.

    Tôi không có gì để nói ngoại trừ lời xin lỗi đến những ai đang chờ đợi bài giảng tiếp theo của " Ứng dụng microservice (MSA) được phát triển với Spring Cloud ". Theo kế hoạch ban đầu, buổi giảng lẽ ra khai giảng vào tháng 1 năm ngoái đã bị hoãn lại sang tháng 2 và tháng 3 do dự án đang triển khai có vấn đề, nhưng vẫn chưa khai giảng... nhưng... thực sự sẽ sớm thôi! Chúng tôi đang thực hiện những chuẩn bị cuối cùng để khai trương.

    Bài giảng tiếp theo sẽ về CI/CD theo lịch trình. Hôm nay, trước tiên tôi xin giới thiệu mục lục của bài giảng CI/CD.

    Bài giảng gồm 6 đến 7 phần. Tùy thuộc vào việc phần Phụ lục có được đưa vào bài giảng này hay không mà nó có thể sẽ được chia thành 6 hoặc 7 phần.

    Phần 1. DevOps và CI/CD

    1-1. DevOps và CI/CD

    1-2. Quy trình làm việc CI/CD

    1-3. Cài đặt Jenkins

    1-4. Bài tập số 1

     

    Phần 2. Sử dụng CI/CD bằng Jenkins

    2-1. Tích hợp Git & Maven cho CI/CD

    2-2. Bài tập số 2

    2-3. Tích hợp máy chủ Tomcat cho CI/CD

    2-4. Bài tập số 3

    2-5. Cài đặt thăm dò ý kiếnSCM

    2-6. Định cấu hình môi trường phòng thí nghiệm bằng Docker

    2-7. Bài tập số 4

     

    Phần 3. Jenkins + Cơ sở hạ tầng dưới dạng Code (Quản lý cấu hình bằng Ansible)

    3-1. IaC

    3-2. Tổng quan về Ansible

    3-3. Cài đặt Ansible

    3-4. Playbook Ansible

    3-5. Bài tập số 5

    3-6. Triển khai hình ảnh Docker

    3-7. Bài tập số 6

     

    Phần 4. Tích hợp Jenkins + Ansible + Kubernets

    4-1. Triển khai đến cụm Kubernetes

    4-2. Tích hợp Ansible + Kubernetes

    4-3. Bài tập số 7

    4-4. quá trình CI/CD

    4-5. Bài tập số 8

    4-6. Cài đặt Minikube (chip Apple Silicon)

     

    Phần 5. Sử dụng Jenkins nâng cao

    5-1. Sử dụng đường ống phân phối

    5-2. Cấu hình đường ống Jenkins

    5-3. Bài tập số 9

    5-4. Bài tập số 10

    5-5. thực hành

    5-6. Phân tích tĩnh SonarQube

     

    Phần 6. Triển khai lên đám mây công cộng

    6-1. Tạo phiên bản AWS EC2 và cài đặt Docker

    6-2. Triển khai lên AWS

    6-3. Định cấu hình cụm Kubernetes bằng Kops

    6-4. Tạo phiên bản máy chủ NCP và cài đặt Docker

    6-5. Triển khai tới NCP

     

    Phụ lục

    A-1. Yêu cầu cài đặt SW

    A-2. Cài đặt máy chủ Tomcat

    A-3. Máy chủ SSH

    A-4. Cài đặt XShell và MobaXterm cho người dùng Windows

    A-5. Cài đặt đầu cuối cho người dùng MacOS

     

    Chúng tôi xin cảm ơn bạn một lần nữa vì đã quan tâm đến bài giảng và chúng tôi mong sớm được gặp lại bạn với một bài giảng tuyệt vời.

    Cảm ơn

     

    0
  • kenneth님의 프로필 이미지

    Xin chào, đây là Lee Do-won.

    Trong bài giảng “Xây dựng đường ống CI/CD bằng Jenkins”, chúng tôi muốn đề cập đến các chủ đề sau.

    Phần 1. DevOps và CI/CD

    1. DevOps và CI/CD

    2. Quy trình làm việc CI/CD

    3. Yêu cầu cài đặt SW

    4. Cài đặt Jenkins

    Phần 2. Sử dụng CI/CD bằng Jenkins

    5. Tích hợp Git & Maven cho CI

    6. Tích hợp Tomcat Server cho CD

    7. Tích hợp Docker cho CD

    Phần 3. Quản lý cấu hình bằng Ansible

    8. Tổng quan về Ansible

    9. Sử dụng Ansible

    10. Playbook Ansible

    11. Đăng ký hình ảnh Docker thông qua Playbook

    Phần 4. Tích hợp Jenkins + Ansible + Kubernets

    12. Triển khai vào cụm Kubernetes

    13. Tích hợp Ansible + Kubernetes

    Phần 5. Sử dụng Jenkins Pipeline

    14. Sử dụng quy trình phân phối

    15. Cấu hình đường ống Jenkins

    Phụ lục

    1. Cài đặt Minikube cho người dùng Apple M1

    2. Tạo phiên bản AWS EC2 và cài đặt Docker

    3. Cài đặt XShell và MobaXterm cho người dùng Windows

    4. Cài đặt Terminus cho người dùng MacOS

    5. Định cấu hình cụm Kubernetes bằng Kops

     

    Chúng tôi mong nhận được sự quan tâm và hỗ trợ liên tục của bạn trong tương lai.

    Thời tiết đang trở nên lạnh hơn một chút. Tôi mong mọi người hãy chăm sóc bản thân thật tốt và luôn khỏe mạnh.

    Cảm ơn

     

    5
  • kenneth님의 프로필 이미지

    Xin chào, đây là Lee Do-won.

    Trước hết, tôi xin cảm ơn tất cả những người đã quan tâm đến bài giảng.

    Đối với các bài giảng về microservices sử dụng Spring Boot và Spring Cloud, tôi dự định tổ chức các bài giảng theo 4 thành phần của Cloud Native đã đề cập trong CNCF.

    - Ảo hóa vùng chứa

    - Dịch vụ vi mô

    -CI/CD

    - DevOps

    Chúng tôi đã bắt đầu bài giảng về "Phát triển các dịch vụ web RESTful bằng cách sử dụng Spring Boot" và "Ứng dụng vi dịch vụ được phát triển với Spring Cloud" và chúng tôi dự định sẽ trình bày Kiến trúc MSA, Mẫu, Lưới dịch vụ và CI/CD dưới dạng các bài giảng tiếp theo. không được đề cập trong bài giảng không nhìn thấy. Và bài giảng "Phát triển các dịch vụ web RESTful bằng Spring Boot" dự kiến ​​sẽ được cập nhật lại để phản ánh thư viện mới được cập nhật.

    Như bạn đã đề cập, các bài giảng tiếp theo dự kiến ​​sẽ được mở theo thứ tự sau. Ngày khai giảng tiếp tục bị hoãn do trùng với công việc khác nhưng mục tiêu là khai giảng sớm nhất có thể trong năm nay.

    1. CI/CD (tháng 8)

    2. Kiến trúc MSA + Mẫu + Lưới dịch vụ (Tháng 9 đến tháng 10)

    3. WebFlux (~ Tháng 12)

    Dù khó khăn vì nắng nóng gay gắt và dịch bệnh Covid-19 nhưng tôi mong mọi người đều khỏe mạnh và đạt được điều mình mong muốn.

    Cảm ơn

    3
  • kenneth님의 프로필 이미지

    Xin chào, đây là Lee Do-won.

    Đã gần một năm kể từ khi tôi bắt đầu dạy " Phát triển dịch vụ web RESTful bằng Spring Boot ". Một lần nữa chúng tôi xin cảm ơn những người đã tham gia khóa học.

    Kế hoạch ban đầu là mở bài giảng tiếp theo, " Các dịch vụ vi mô được phát triển với Spring Cloud ", nhưng nó đã bị hoãn lại vì nhiều lý do và hiện đã được mở.

    “Các dịch vụ vi mô được phát triển với Spring Cloud” bao gồm các chủ đề sau và bài giảng hiện đã được ghi lại và gửi cho Infron.

    Tổng thời lượng bài giảng " Phát triển dịch vụ web RESTful bằng Spring Boot " là khoảng 7 giờ, nhưng phần " Microservices được phát triển với Spring Cloud " này đã hơn 27 giờ, mặc dù buổi ghi hình vẫn chưa kết thúc. Vì vậy, bài giảng được chia thành hai phần, và có vẻ như những phần chưa thể trình bày đầy đủ nên được trình bày trong các bài giảng tiếp theo.

    Chúng tôi hiện đang chờ khai trương vào tháng 3 năm 2021 và đang bao gồm các nội dung sau bằng cách bổ sung các nội dung đã lên kế hoạch trước đó.

    Như tôi đã đề cập, toàn bộ bài giảng sẽ bao gồm hai phần và chúng tôi dự định đề cập tổng cộng 17 chủ đề của phần.

    PHẦN I
    Phần 0. Giới thiệu về Microservice và Spring Cloud
    Phần 1. Khám phá dịch vụ
    Phần 2. Dịch vụ cổng API
    Mục 3. Ứng dụng thương mại điện tử
    Phần 4. Vi dịch vụ của người dùng ➀
    Phần 5. Catalog và đơn đặt hàng Microservice
    Phần 6. Vi dịch vụ của người dùng ➁
    Phần 7. Dịch vụ cấu hình
    Phần 8. Xe buýt đám mây mùa xuân

    PHẦN II
    Phần 9. Xử lý thông tin cài đặt được mã hóa
    Mục 10. Truyền thông giữa các vi dịch vụ
    Phần 11. Sử dụng Apache Kafka để đồng bộ hóa dữ liệu ①
    Phần 12. Sử dụng Apache Kafka để đồng bộ hóa dữ liệu ②
    Phần 13. Xử lý lỗi và theo dõi phân phối microservice
    Phần 14. Giám sát vi dịch vụ
    Phần 15. Ảo hóa vùng chứa để triển khai ứng dụng
    Phần 16. Triển khai ứng dụng - Docker Container
    Phụ lục: Mẫu kiến ​​trúc microservice

    Chúng tôi xin cảm ơn nhiều sinh viên một lần nữa vì đã quan tâm và chúng tôi sẽ quay lại với một bài giảng mới.

    Cảm ơn

    5

618.273 ₫