Để học Spring Boot cần bắt đầu từ đâu?

Để học Spring Boot cần bắt đầu từ đâu?

Hỏi đáp CNTT 21/02/2022

Spring là một Java framework khổng lồ, làm được tất cả mọi thứ. Được chia thành nhiều module, mỗi module làm một chức năng, ví dụ Spring Core, Web, Data access, AOP,… Spring Boot được xây dựng dựa trên các khái niệm nền tảng là Dependency injection và AOP (Aspect Oriented Programming).

1. Giới thiệu về Spring Boot

1.1. Spring Boot là gì?

Một trong những rắc rối khi dùng Spring là việc cấu hình của dự án quá phức tạp. Bạn phải làm đủ thứ việc chỉ để tạo ra một web HelloWorld:

  • Tạo Maven hoặc Gradle project
  • Thêm các thư viện cần thiết cho dự án
  • Tạo XML để cấu hình project
  • Code và build thành file WAR
  • Cấu hình Tomcat server có thể chạy được file WAR vừa build

Spring có vẻ khá mạnh mẽ nhưng việc cấu hình khá phức tạp. Do đó Spring boot ra đời, với các ưu điểm:

  • Auto config: tự động thay cấu hình cho bạn, chỉ cần bắt đầu code và chạy.
  • Xây dựng các bean dựa trên annotation thay vì XML.
  • Server Tomcat được nhúng ngay trong file JAR, chỉ cần chạy ở bất kì đâu mà ngôn ngữ lập trình java chạy được

image.png

So sánh với Spring, thì Spring Boot cần:

  • Dùng Spring Initializr, nhập các infomation của project, chọn thư viện rồi down code về
  • Mở source code và bắt đầu code
  • Chạy ngay trong IDE, hoặc build thành file JAR, không cần cấu hình server

1.2. Tại sao nên học ngôn ngữ Spring Boot?

Với Node.js, có tính linh hoạt nên bạn sẽ phải tập trung nhiều vào code hơn. Kiểu như bạn phải tìm “best practice”, “cách tốt nhất” để code 1 chương trình nào đó.

Nhưng với Spring boot thì khác, có nhiều thư viện sẵn có và cấu trúc code cũng thành chuẩn mực, nên bạn không cần quá quan tâm đến việc phải viết code thế nào cho tốt nữa, thay vào đó sẽ tập trung vào tính logic hơn.

image.png

2. Cần tìm hiểu những gì trước khi học

2.1. Java Core

Trước khi học Spring Boot thì các bạn cần biết Java core. Một số kiến thức cần thiết của Java core như sau:

  • Java cơ bản: biến, hàm, vòng lặp,…
  • Lập trình hướng đối tượng (OOP)
  • Java 8: các tính năng mới trong java 8 (tối thiểu phải biết)
  • Collections API: biết cách dùng các collection quan trọng

Ngoài ra các bạn có thể tìm hiểu thêm về:

  • Stream API
  • Asynchronous
  • Multi threading
  • File IO

2.2. Package manager

Khi code một Dự án Spring Boot thì cần có package manager để quản lý các thư viện cần bổ sung. Bạn nào code Javascript chắc chắn sẽ biết về NPM và Yarn, thì ngôn ngữ Java cũng có hai package manager tương tự là Maven và Gradle.

  • Tìm hiểu cách sử dụng Maven cơ bản
  • Tìm hiểu cách sử dụng Gradle cơ bản

Phần này khi bắt đầu không nên tìm hiểu quá sâu, chỉ cần biết cách tự cài đặt thư viện, xóa thư viện, chỉnh sửa thông tin project, các build-in tasks là được.

2.3. Spring Boot

Cách học ngôn ngữ Spring Boot đúng đắn là làm project. Bởi vì nhiều thứ trong Spring Boot rất dễ, chủ yếu là bạn đã từng thực hành chưa:

  • Học Spring Boot nên bắt đầu từ đâu
  • Tạo ra dự án Spring Boot đầu tiên: Dùng Spring Initializr để generate code, chọn các dependency, chạy, debug, build JAR và chạy file JAR đó.
  • Hướng đi trong Spring Boot: Tìm hiểu một service Spring Boot gồm những thành phần nào, và luồng đi của dữ liệu như thế nào.
  • Dependency injection áp dụng trong Spring Boot như thế nào (phần 1)
  • Dependency injection áp dụng trong Spring Boot như thế nào (phần 2)
  • Bean và ApplicationContext có vai trò gì trong Spring Boot: Tìm hiểu cơ bản về Bean và ApplicationContext.
  • Vòng đời, các loại bean và cơ chế component scan: Tìm hiểu sâu hơn về các bean được định nghĩa như nào và xử lý.
  • Cấu trúc một dự án Spring Boot như thế nào cho chuẩn: Tìm hiểu các thành phần cơ bản như Controller, Services,… và cách tổ chức trong source code.
  • Entity, DTO và Model: Ba đối tượng chứa dữ liệu chính và cách convert, mapping qua lại giữa các đơn vị.
  • Spring Boot xử lý request trong controller như thế nào (phần 1): Cách các controller hoạt động, các loại HTTP method và nhận dữ liệu từ request.
  • Spring Boot xử lý request trong controller như thế nào (phần 2)
  • Xử lý request trong Controller (phần 2): Trả về lỗi và xử lý chuyên dụng với các loại data điển hình.
  • Xử lý exception phát sinh trong các ứng dụng Spring Boot
  • Validation dữ liệu request – việc này luôn luôn cần thiết
  • Tổ chức code service trong Spring Boot: bài viết ngắn gọn nói sơ qua về vai trò của service layer.
  • Xử lý exception hiệu quả trong Spring Boot: Cách tạo Aspect để bắt exception dù nó xuất hiện ở bất cứ đâu.
  • Cấu hình Spring Boot trong file application.properties: đây là gì và kĩ thuật chia cấu hình hiệu quả nhất.
  • HTML template và static content: Thư mục template và static là gì, đóng vai trò như thế nào?
  • Scheduled job trong Spring Boot: Tạo và thực hiện các tác vụ theo lịch trình đặt sẵn.
  • Lập trình hướng khía cạnh AOP không khó như bạn nghĩ: Tìm hiểu về AOP, các khái niệm liên quan và thực hiện một demo đơn giản.

2.4. JPA/MongoDB

  • Cách cấu hình database trong Spring Boot: Tạo data base, thêm các thông số kết nối 
  • Cấu trúc lớp và interface của JPA: JPA/MongoDB gồm những interface, class nào, phân cấp ra sa0 và các chức năng của chúng.
  • CRUD cơ bản: Tìm hiểu các thao tác cơ bản của CRUD.
  • Query creation: Tự động tạo query dựa trên tên method, hoặc bạn có thể custom nó bằng @Query.
  • Thực hiện các câu query phức tạp bằng MongoTemplate: Sử dụng MongoTemplate và các đối tượng như Query, Update,… để làm các hành động phức tạp hơn
  • Sắp xếp và phân trang data query: Sort và paging dữ liệu query, đặc biệt là custom paging bằng skip và limit.
  • Thực hiện aggregation: Tổng hợp các dữ liệu trong MongoDB

2.5. Template engine

Template engine xử lý phần View trong các ứng dụng MVC, trong Spring Boot thì chúng ta sử dụng template engine để pass dữ liệu vào View và trả về một trang HTML nào đó

  • Trả về trang HTML cơ bản trong Spring Boot
  • Sử dụng Thymeleaf trong Spring Boot
  • Sử dụng JSP trong Spring Boot

2.6. Các tool khác

Ngoài ra, trong dự án Spring Boot sẽ cần một số tool khác sẽ được embed vào code. Và bạn cần biết cấu hình và sử dụng chúng hiệu quả để nâng cao năng suất code.

  • Cấu hình và sử dụng Swagger trong Spring Boot: Swagger là một tool dùng để xem, chạy và test các API tương tự như Postman. Đặc biệt là nó sẽ được kèm theo trong chính project của bạn, nó sẽ tự động phân tích metadata của code và sinh ra API. Ngoài ra các Swagger còn có thể generate document từ chính code của bạn.
  • Thiết lập Logger cho project Spring Boot
  • Lombok – viết code Java ngắn hơn bình thường
  • Cấu hình Spring Actuator: Công cụ giám sát, theo dõi tình trạng của web service Spring Boot. Actuator sẽ thêm 1 số API để bạn sử dụng, ví dụ /info hoặc /health để check tình trạng hoạt động của project như thế nào
  • Quarzt – giải pháp sẽ thay thế cho Spring Schedule
  • Cấu hình Firebase trong Spring Boot: Sử dụng các tính năng của Firebase giống như Authentication, Firestore, Storage,… trong dự án Spring Boot.
  • Cấu hình Spring Boot devtools: Dễ dàng có được các tính năng như HotReload.

2.7. Nâng cao

  • Unit testing: Sử dụng JUnit để test ứng dụng của Spring Boot.
  • Xuất file Excel trong Spring Boot: Sử dụng Apache POI để tạo và xuất các file Excel.
  • Cách thêm SSL cho Spring Boot: Làm cho API của bạn được hỗ trợ HTTPS
  • Cách gửi mail trong Spring Boot
  • Cách cấu hình trang 404 và white page.

2.8. What’s next?

Sau khi đã nắm được đủ các kiến thức trên, các bạn có thể tìm hiểu thêm một số kiến thức khác liên quan Spring Boot.

  • Tìm hiểu Spring Security cơ bản
  • Xác thực người dùng trong Spring Security bằng các session
  • Xác thực người dùng trong Spring Security bằng JWT
  • Khái niệm Spring batch là gì?
  • Spring reactive web: Web framework không đồng bộ tương tự Node.js nhưng là Java.

Spring Boot mặc định sử dụng ngôn ngữ lập trình Java, các bạn có thể tìm hiểu thêm về Kotlin cũng khá hay.

3. Good resources

Các trang web học Java và Spring Boot khá tốt:

  • Logicbig: Website học Java siêu dễ hiểu
  • Loda.me:
  • Javatpoint: Website này dành cho những bạn kiên nhẫn và muốn đào sâu.

Lương Thuận – dịch từ viblo

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!