Facebook Pixel

Spring Boot là gì? Hướng dẫn Khởi tạo Project Spring Boot với Docker

14 Nov, 2024

Spring Boot là một framework giúp đơn giản hóa việc phát triển ứng dụng Java: tự động hóa các cấu hình phức tạp, cung cấp các thiết lập mặc định

Spring Boot là gì? Hướng dẫn Khởi tạo Project Spring Boot với Docker

Mục Lục

Ngày xưa, khi phát triển ứng dụng bằng Java, việc cấu hình môi trường có thể nói là một “cơn ác mộng” vì nó khá phức tạp và tốn thời gian.

Nhưng rồi, những công cụ hỗ trợ tự động hóa cấu hình đã ra đời, và trong số đó, Spring Boot của Pivotal nổi bật như một "người hùng" giúp cuộc sống lập trình viên trở nên dễ thở hơn.

Từ các dự án nhỏ đến những hệ thống lớn, Spring Boot đã chinh phục được lòng tin của cộng đồng nhờ khả năng tối giản hoá quy trình phát triển, giúp chúng ta không phải bận tâm đến những chi tiết cài đặt rắc rối. Vậy Spring Boot là gì? Hãy cùng mình tìm hiểu trong bài viết sau đây nhé.

1. Spring Boot là gì?

Spring Boot là một framework được xây dựng dựa trên Spring Framework, được thiết kế để đơn giản hóa việc phát triển các ứng dụng Java bằng cách tự động hóa các cấu hình phức tạp và cung cấp các thiết lập mặc định tối ưu.

Ban đầu, Spring Framework xuất hiện với mục tiêu đơn giản hóa việc cấu hình cho ứng dụng web. Nhưng vẫn còn nhiều nhược điểm khi phải cấu hình qua các file XML khá rườm rà, không đạt được hiệu quả tối đa. Dù vậy, Spring vẫn là một công cụ mạnh mẽ giúp dự án có cấu trúc rõ ràng và dễ quản lý.

Để giải quyết những bất tiện này, Spring Boot đã ra đời với mục tiêu "làm mới" mọi thứ.  Spring Boot cung cấp gần như mọi thứ bạn cần để xây dựng một ứng dụng phổ biến, với các cấu hình mặc định tối ưu sẵn. Giúp bạn triển khai ứng dụng trong thời gian ngắn, giảm bớt công sức cấu hình phức tạp.

Ngoài ra, Spring Boot còn tích hợp sẵn máy chủ Tomcat, cho phép bạn khởi chạy ứng dụng ngay lập tức mà không cần phải cài đặt thêm.

2. Hướng dẫn Cài đặt và Sử dụng Spring Boot

2.1 Chuẩn bị môi trường

Để bắt đầu, bạn cần đảm bảo đã cài đặt, trong ví dụ này mình sẽ sử dụng IDEVSCode:

  • Java Development Kit (JDK): Tải và cài đặt JDK từ trang chủ Oracle hoặc OpenJDK. Spring Boot yêu cầu JDK 8 hoặc cao hơn.
  • Maven (hoặc Gradle): Đây là công cụ build phổ biến  trong các dự án Spring Boot.
  • Extension Pack for Java: Mở VSCode và vào mục Extensions, tìm kiếm và cài đặt Extension Pack for Java.
  • Spring Boot Extension Pack: Mở VSCode và vào mục Extensions, tìm kiếm và cài đặt Spring Boot Extension Pack.

2.2 Tạo Project Spring Boot

  • Bước 1: Mở VSCode và nhấm tổ hợp phím Ctrl (Command) + Shift + P (hoặc vào View > Command Palette).
  • Bước 2: Nhập Spring Initializr và chọn Spring Initializr: Create a Maven Project (hoặc Gradle nếu bạn thích Gradle).
  • Bước 3: Chọn Version cho Spring Boot, ở đây mình chọn 3.3.5, các bạn cứ chọn version nào mới nhất là được.
  • Bước 4: Chọn ngôn ngữ là Java, tiếp đến là Group Id, và Artifact, mình đã điền như hình bên dưới, các bạn có thể tham khảo.
  • Bước 5: Chọn package type là Jar, và Java version là 17
  • Bước 6: Cài thêm các dependency như Spring Web (cho ứng dụng web).
  • Bước 7: Nhấn Enter và chọn Folder để khởi tạo dự án, Spring Initializr sẽ tạo cho mình dự án  vào folder 200Lab_Series như hình bên dưới đây.

2.3 Cấu hình và Viết Code cho Ứng dụng Spring Boot

Trong Project sẽ có file DemoApplication.java trong thư mục src/main/java. Đây là file chính để khởi động ứng dụng Spring Boot.

Ví dụ, bạn có thể thêm một API đơn giản như sau:

Java
package com.lab200.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@RestController
@RequestMapping("/api")
class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}

2.4 Chạy Ứng dụng Spring Boot trên VSCode

Mở Terminal trong VSCode (Ctrl + `), di chuyến đến folder demo và chạy lệnh:

Bash
./mvnw spring-boot:run

Lệnh này sẽ khởi động ứng dụng và bạn có thể truy cập tại http://localhost:8080/api/hello. Trên màn hình sẽ hiển thị Hello, Spring Boot!

2.5 Cài đặt và Chạy Spring Boot với Docker

Để đảm bảo rằng tất cả mọi người trong team của bạn không sử dụng các version khác nhau của jdk, hay xung đột thư viện, lỗi trong quá trình setup môi trường, ... chúng ta cần đóng gói mã nguồn và cấu hình vào Docker container, bây giờ mình sẽ hướng dẫn các bạn cách containerize nhé.

  • Bước 1: Trong thư mục demo tạo file Dockerfile có nội dung như sau
Dockerfile
# Stage 1: Build
FROM maven:3.8.7-openjdk-18-slim AS build

# Đặt thư mục làm việc cho stage build
WORKDIR /app

# Sao chép file cấu hình Maven và source code vào image
COPY pom.xml .
COPY src ./src

# Chạy lệnh Maven để build file JAR
RUN mvn clean package -DskipTests

# Stage 2: Run
FROM openjdk:21-slim

# Đặt thư mục làm việc cho stage run
WORKDIR /app

# Sao chép file JAR đã build từ stage build vào stage run
COPY --from=build /app/target/demo-0.0.1-SNAPSHOT.jar app.jar

# Chạy ứng dụng Spring Boot
ENTRYPOINT ["java", "-jar", "app.jar"]
  • Bước 2: Trong thư mục demo chạy câu bệnh build Docker image
Bash
docker build -t springboot-app .
  • Bước 3: Khởi chạy container từ Docker image vừa mới build xong
Bash
docker run -p 8080:8080 springboot-app
  • Bước 4: Mở trình duyệt và truy đường link http://localhost:8080/api/hello. Trên màn hình sẽ hiển thị Hello, Spring Boot!

3. Kết luận

Nhờ vào những tính năng tự động cấu hình mạnh mẽ, Spring Boot giúp chúng ta tiết kiệm thời gian và dễ dàng triển khai từ các dự án nhỏ đến những hệ thống lớn.

Các bài viết liên quan:

Bài viết liên quan

Lập trình backend expressjs

xây dựng hệ thống microservices
  • Kiến trúc Hexagonal và ứng dụngal font-
  • TypeScript: OOP và nguyên lý SOLIDal font-
  • Event-Driven Architecture, Queue & PubSubal font-
  • Basic scalable System Designal font-

Đăng ký nhận thông báo

Đừng bỏ lỡ những bài viết thú vị từ 200Lab