Hướng dẫn java spring boot

Trong bài viết này, mình tổng hợp tất cả những bài viết của Hướng Dẫn Java về Spring Boot để mọi người tiện tham khảo.

Cài đặt

  • Cài đặt Spring Boot Command Line Interface trên Window

Để có thể tạo mới một project Spring Boot dễ dàng sử dụng command line trên Window, các bạn nên tham khảo bài viết này để cài đặt Spring Boot CLI.

  • Cài đặt Spring Boot Command Line Interface trên Ubuntu.

Tương tự như trên Window, các bạn cũng có thể cài đặt Spring Boot CLI trên Ubuntu.

  • Cài đặt Spring Boot Command Line Interface trên macOS

Trong bài viết này, mình hướng dẫn các bạn cách đơn giản để deploy ứng dụng Spring Boot trong Docker container.

  1. Giới thiệu về Spring Boot Spring Boot là một framework phát triển ứng dụng Java dựa trên Spring Framework. Nó giúp chúng ta xây dựng các ứng dụng web nhanh chóng và dễ dàng. Với Spring Boot, chúng ta không cần quan tâm đến việc cấu hình nhiều về Spring, mà tập trung vào việc phát triển chức năng của ứng dụng.

Trong phần này, chúng ta sẽ tìm hiểu về lợi ích và tính năng của Spring Boot, tại sao nên sử dụng nó cho phát triển ứng dụng web. 2. Chuẩn bị môi trường phát triển Trước khi bắt đầu phát triển ứng dụng Spring Boot, chúng ta cần cài đặt một số công cụ và môi trường:

Java Development Kit (JDK): Cần cài đặt JDK để biên dịch và chạy ứng dụng Java. Spring Tool Suite (STS) hoặc IntelliJ IDEA: Chọn một IDE phù hợp để phát triển ứng dụng Spring Boot. Chúng ta sẽ hướng dẫn cách cài đặt và cấu hình môi trường phát triển trong phần này.

  1. Tạo dự án Spring Boot Spring Initializr là một công cụ giúp tạo dự án Spring Boot nhanh chóng và dễ dàng. Chúng ta sẽ sử dụng Spring Initializr để tạo một dự án Spring Boot mới với cấu trúc cơ bản.

Trong phần này, chúng ta sẽ thực hiện các bước sau:

Truy cập vào trang web của Spring Initializr. Chọn các tùy chọn và phụ thuộc cần thiết cho dự án. Tải xuống và import dự án vào IDE của chúng ta. 4. Xây dựng REST API REST (Representational State Transfer) là một kiến trúc phổ biến cho việc phát triển các dịch vụ web. Trong phần này, chúng ta sẽ xây dựng một REST API đơn giản sử dụng Spring Boot.

Chúng ta sẽ thực hiện các bước sau:

Định nghĩa các model và entity cho dữ liệu. Xây dựng các Repository để tương tác với cơ sở dữ liệu. Tạo các Controller và các phương thức API để xử lý yêu cầu từ client. 5. Xử lý yêu cầu và trả về dữ liệu Trong phần này, chúng ta sẽ tìm hiểu cách xử lý yêu cầu từ client và trả về dữ liệu phù hợp. Chúng ta sẽ sử dụng các annotation trong Spring Boot để định nghĩa các endpoint và xử lý các yêu cầu HTTP.

Chúng ta sẽ thực hiện các công việc sau:

Sử dụng @RequestMapping để ánh xạ yêu cầu HTTP tới các phương thức xử lý tương ứng. Xử lý tham số đầu vào và truy vấn dữ liệu từ cơ sở dữ liệu. Trả về dữ liệu dưới dạng JSON hoặc XML sử dụng các annotation như @ResponseBody. 6. Thử nghiệm ứng dụng Trước khi triển khai ứng dụng, chúng ta cần kiểm tra các phương thức API để đảm bảo chúng hoạt động như mong đợi. Trong phần này, chúng ta sẽ sử dụng Postman để gửi yêu cầu HTTP và kiểm tra kết quả.

Chúng ta sẽ thực hiện các công việc sau:

Tạo các yêu cầu GET, POST, PUT và DELETE sử dụng Postman. Gửi yêu cầu tới các endpoint và kiểm tra kết quả trả về. 7. Triển khai ứng dụng Cuối cùng, sau khi hoàn thành phát triển ứng dụng, chúng ta cần triển khai ứng dụng lên một môi trường thực tế. Chúng ta sẽ tìm hiểu cách triển khai ứng dụng Spring Boot sử dụng các công cụ như Docker hoặc Heroku.

Chúng ta sẽ thực hiện các bước sau:

Chuẩn bị môi trường triển khai. Xây dựng ứng dụng thành file JAR hoặc WAR. Triển khai ứng dụng lên môi trường thực tế.

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

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.

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.