Back to blog

Bắt Đầu với Spring Boot: Dự Án Đầu Tiên

javaspring-bootbackendweb developmentrest-api
Bắt Đầu với Spring Boot: Dự Án Đầu Tiên

Giới Thiệu

Spring Boot là một trong những framework phổ biến nhất để xây dựng ứng dụng Java cấp doanh nghiệp. Framework này đơn giản hóa việc phát triển các ứng dụng production-ready với cấu hình tối thiểu, khiến nó trở thành lựa chọn tuyệt vời cho microservices, REST APIs và web applications.

Trong hướng dẫn toàn diện này, chúng ta sẽ tìm hiểu:

  • Cài đặt Java Development Kit (JDK)
  • Thiết lập công cụ phát triển
  • Tạo dự án Spring Boot đầu tiên
  • Hiểu cấu trúc dự án
  • Xây dựng REST API đơn giản
  • Chạy và test ứng dụng
  • Best practices cho Spring Boot development

Yêu Cầu Trước Khi Bắt Đầu

Trước khi bắt đầu, bạn cần:

  • Máy tính chạy Windows, macOS hoặc Linux
  • Hiểu biết cơ bản về lập trình Java (xem Lộ Trình Học Java của chúng tôi)
  • Quen thuộc với command line
  • Text editor hoặc IDE

Kiến thức Java được khuyến nghị: Hoàn thành ít nhất Giai Đoạn 1: Java Fundamentals và Giai Đoạn 2: Lập Trình Hướng Đối Tượng trước khi bắt đầu với Spring Boot. Giai Đoạn 3: Core Java APIs bao gồm collections, streams và exception handling mà bạn sẽ sử dụng thường xuyên trong các dự án Spring Boot.

Bước 1: Cài Đặt Java (JDK)

Spring Boot yêu cầu Java Development Kit (JDK) phiên bản 17 trở lên. Hãy cài đặt cho hệ điều hành của bạn.

Chọn JDK Phù Hợp

Có nhiều phiên bản JDK khác nhau:

  • Eclipse Temurin (trước đây là AdoptOpenJDK) - Khuyến nghị cho đa số người dùng
  • Oracle JDK - Phiên bản chính thức từ Oracle
  • Amazon Corretto - Phiên bản tối ưu cho AWS
  • Microsoft Build of OpenJDK - Tối ưu cho Azure

Khuyến nghị: Chúng ta sẽ dùng Eclipse Temurin vì nó miễn phí, mã nguồn mở và được hỗ trợ rộng rãi.

Cài Đặt trên macOS

Cách 1: Dùng Homebrew (Khuyến nghị)

# Cài đặt Homebrew nếu chưa có
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
 
# Cài đặt Java 21 (LTS)
brew install openjdk@21
 
# Thêm vào PATH
echo 'export PATH="/opt/homebrew/opt/openjdk@21/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
 
# Kiểm tra cài đặt
java -version

Cách 2: Download từ Adoptium

  1. Truy cập https://adoptium.net/
  2. Chọn version 21 (LTS) và macOS
  3. Download và chạy installer
  4. Làm theo hướng dẫn cài đặt

Cài Đặt trên Windows

Cách 1: Dùng Chocolatey (Khuyến nghị)

# Cài đặt Chocolatey (chạy PowerShell as Administrator)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
 
# Cài đặt Java 21
choco install temurin21
 
# Kiểm tra cài đặt
java -version

Cách 2: Cài Đặt Thủ Công

  1. Truy cập https://adoptium.net/
  2. Chọn version 21 (LTS) và Windows
  3. Download file .msi installer
  4. Chạy installer và làm theo hướng dẫn
  5. Đảm bảo chọn "Set JAVA_HOME variable"
  6. Kiểm tra bằng cách mở Command Prompt:
java -version

Cài Đặt trên Linux (Ubuntu/Debian)

# Cập nhật package index
sudo apt update
 
# Cài đặt Java 21
sudo apt install openjdk-21-jdk -y
 
# Kiểm tra cài đặt
java -version
 
# Kiểm tra JAVA_HOME (nên được set tự động)
echo $JAVA_HOME

Với RHEL/CentOS/Fedora:

# Cài đặt Java 21
sudo dnf install java-21-openjdk-devel -y
 
# Kiểm tra cài đặt
java -version

Xác Nhận Java Đã Được Cài Đặt

Sau khi cài đặt, xác nhận Java đã được cài đặt đúng:

# Kiểm tra phiên bản Java
java -version
 
# Kết quả mong đợi (số phiên bản có thể khác):
# openjdk version "21.0.1" 2023-10-17 LTS
# OpenJDK Runtime Environment Temurin-21.0.1+12 (build 21.0.1+12-LTS)
# OpenJDK 64-Bit Server VM Temurin-21.0.1+12 (build 21.0.1+12-LTS, mixed mode)
 
# Kiểm tra Java compiler
javac -version
 
# Kiểm tra JAVA_HOME
echo $JAVA_HOME  # macOS/Linux
echo %JAVA_HOME% # Windows

Bước 2: Thiết Lập Công Cụ Phát Triển

Cài Đặt IDE

Mặc dù bạn có thể dùng bất kỳ text editor nào, IDE sẽ cải thiện năng suất đáng kể:

IntelliJ IDEA (Khuyến nghị)

Tốt nhất cho Spring Boot development

# macOS (dùng Homebrew)
brew install --cask intellij-idea-ce  # Community Edition (Miễn phí)
 
# Windows (dùng Chocolatey)
choco install intellijidea-community

Hoặc download từ https://www.jetbrains.com/idea/download/

Tính năng:

  • Hỗ trợ Spring Boot xuất sắc
  • Code completion thông minh
  • Hỗ trợ Maven/Gradle tích hợp sẵn
  • Debugger tích hợp
  • Tích hợp Git

Visual Studio Code

Lựa chọn nhẹ hơn

# macOS
brew install --cask visual-studio-code
 
# Windows
choco install vscode

Extensions cần thiết:

  • Extension Pack for Java
  • Spring Boot Extension Pack
  • Spring Initializr Java Support

Eclipse IDE

IDE Java truyền thống

Download từ https://www.eclipse.org/downloads/

Chọn "Eclipse IDE for Enterprise Java and Web Developers"

Cài Đặt Maven hoặc Gradle

Dự án Spring Boot sử dụng build tools để quản lý dependencies:

Maven (Chúng ta sẽ dùng cái này)

macOS:

brew install maven
mvn -version

Windows:

choco install maven
mvn -version

Linux:

sudo apt install maven -y
mvn -version

Gradle (Lựa chọn thay thế)

# macOS
brew install gradle
 
# Windows
choco install gradle
 
# Linux
sudo apt install gradle -y

Bước 3: Tạo Dự Án Spring Boot Đầu Tiên

Có nhiều cách để tạo dự án Spring Boot. Hãy khám phá các phương pháp phổ biến nhất.

Cách 1: Dùng Spring Initializr (Web-based)

  1. Truy cập https://start.spring.io/

  2. Cấu hình dự án:

    • Project: Maven
    • Language: Java
    • Spring Boot: 3.2.2 (hoặc phiên bản stable mới nhất)
    • Group: com.example
    • Artifact: demo
    • Name: demo
    • Package name: com.example.demo
    • Packaging: Jar
    • Java: 21
  3. Thêm Dependencies:

    • Spring Web
    • Spring Boot DevTools
    • Lombok (tùy chọn, để giảm boilerplate code)
  4. Click "Generate" - Download file ZIP

  5. Giải nén và mở:

unzip demo.zip
cd demo

Cách 2: Dùng Spring Boot CLI

# Cài đặt Spring Boot CLI (macOS)
brew tap spring-io/tap
brew install spring-boot
 
# Tạo dự án
spring init --dependencies=web,devtools --build=maven --java-version=21 demo
 
cd demo

Cách 3: Dùng IntelliJ IDEA

  1. Mở IntelliJ IDEA
  2. Click "New Project"
  3. Chọn "Spring Initializr" từ sidebar bên trái
  4. Cấu hình project settings (giống như Spring Initializr web)
  5. Chọn dependencies
  6. Click "Create"

Cách 4: Dùng Maven Archetype (Command Line)

mvn archetype:generate \
  -DgroupId=com.example \
  -DartifactId=demo \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false
 
cd demo

Sau đó thêm Spring Boot dependencies vào pom.xml thủ công.

Bước 4: Hiểu Cấu Trúc Dự Án

Sau khi tạo dự án, bạn sẽ thấy cấu trúc này:

demo/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── demo/
│   │   │               └── DemoApplication.java
│   │   └── resources/
│   │       ├── application.properties
│   │       ├── static/          # File tĩnh (CSS, JS, images)
│   │       └── templates/       # HTML templates (Thymeleaf)
│   └── test/
│       └── java/
│           └── com/
│               └── example/
│                   └── demo/
│                       └── DemoApplicationTests.java
├── target/                      # Compiled classes (tự động tạo)
├── pom.xml                      # Cấu hình Maven
├── mvnw                         # Maven wrapper (Unix)
├── mvnw.cmd                     # Maven wrapper (Windows)
└── .gitignore

Giải Thích Các File Quan Trọng

pom.xml - Cấu Hình Maven

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <!-- Parent POM cung cấp dependency management -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.2</version>
        <relativePath/>
    </parent>
 
    <!-- Thông tin dự án -->
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
 
    <!-- Phiên bản Java -->
    <properties>
        <java.version>21</java.version>
    </properties>
 
    <!-- Dependencies -->
    <dependencies>
        <!-- Spring Web (REST APIs, MVC) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <!-- DevTools (auto-reload khi development) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
 
        <!-- Testing -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
 
    <!-- Cấu hình build -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

DemoApplication.java - Main Application Class

package com.example.demo;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication  // Kết hợp @Configuration, @EnableAutoConfiguration, @ComponentScan
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

application.properties - Cấu Hình

# Cấu hình server
server.port=8080
 
# Tên ứng dụng
spring.application.name=demo
 
# Logging level
logging.level.root=INFO
logging.level.com.example.demo=DEBUG

Bước 5: Xây Dựng REST API Đầu Tiên

Hãy tạo một REST API đơn giản với các thao tác CRUD.

Tạo Model Class

Tạo src/main/java/com/example/demo/model/Book.java:

package com.example.demo.model;
 
public class Book {
    private Long id;
    private String title;
    private String author;
    private Integer year;
 
    // Constructors
    public Book() {}
 
    public Book(Long id, String title, String author, Integer year) {
        this.id = id;
        this.title = title;
        this.author = author;
        this.year = year;
    }
 
    // Getters và Setters
    public Long getId() {
        return id;
    }
 
    public void setId(Long id) {
        this.id = id;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public String getAuthor() {
        return author;
    }
 
    public void setAuthor(String author) {
        this.author = author;
    }
 
    public Integer getYear() {
        return year;
    }
 
    public void setYear(Integer year) {
        this.year = year;
    }
}

Dùng Lombok (Tùy chọn): Nếu bạn đã thêm Lombok dependency, có thể đơn giản hóa:

package com.example.demo.model;
 
import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
 
@Data                    // Tự động tạo getters, setters, toString, equals, hashCode
@NoArgsConstructor       // Constructor không tham số
@AllArgsConstructor      // Constructor với tất cả tham số
public class Book {
    private Long id;
    private String title;
    private String author;
    private Integer year;
}

Tạo Controller

Tạo src/main/java/com/example/demo/controller/BookController.java:

package com.example.demo.controller;
 
import com.example.demo.model.Book;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
 
@RestController                    // Kết hợp @Controller và @ResponseBody
@RequestMapping("/api/books")      // Base URL cho tất cả endpoints
public class BookController {
 
    // Lưu trữ trong bộ nhớ (thay bằng database trong production)
    private List<Book> books = new ArrayList<>();
    private Long nextId = 1L;
 
    // Khởi tạo với dữ liệu mẫu
    public BookController() {
        books.add(new Book(nextId++, "Clean Code", "Robert C. Martin", 2008));
        books.add(new Book(nextId++, "Effective Java", "Joshua Bloch", 2018));
    }
 
    // GET /api/books - Lấy tất cả sách
    @GetMapping
    public List<Book> getAllBooks() {
        return books;
    }
 
    // GET /api/books/{id} - Lấy sách theo ID
    @GetMapping("/{id}")
    public ResponseEntity<Book> getBookById(@PathVariable Long id) {
        Optional<Book> book = books.stream()
            .filter(b -> b.getId().equals(id))
            .findFirst();
 
        return book.map(ResponseEntity::ok)
                   .orElse(ResponseEntity.notFound().build());
    }
 
    // POST /api/books - Tạo sách mới
    @PostMapping
    public ResponseEntity<Book> createBook(@RequestBody Book book) {
        book.setId(nextId++);
        books.add(book);
        return ResponseEntity.status(HttpStatus.CREATED).body(book);
    }
 
    // PUT /api/books/{id} - Cập nhật sách
    @PutMapping("/{id}")
    public ResponseEntity<Book> updateBook(@PathVariable Long id, @RequestBody Book updatedBook) {
        Optional<Book> existingBook = books.stream()
            .filter(b -> b.getId().equals(id))
            .findFirst();
 
        if (existingBook.isPresent()) {
            Book book = existingBook.get();
            book.setTitle(updatedBook.getTitle());
            book.setAuthor(updatedBook.getAuthor());
            book.setYear(updatedBook.getYear());
            return ResponseEntity.ok(book);
        }
 
        return ResponseEntity.notFound().build();
    }
 
    // DELETE /api/books/{id} - Xóa sách
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteBook(@PathVariable Long id) {
        boolean removed = books.removeIf(b -> b.getId().equals(id));
 
        if (removed) {
            return ResponseEntity.noContent().build();
        }
 
        return ResponseEntity.notFound().build();
    }
}

Thêm Welcome Endpoint

Tạo src/main/java/com/example/demo/controller/HomeController.java:

package com.example.demo.controller;
 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.HashMap;
import java.util.Map;
 
@RestController
public class HomeController {
 
    @GetMapping("/")
    public Map<String, String> home() {
        Map<String, String> response = new HashMap<>();
        response.put("message", "Chào mừng đến với Spring Boot API!");
        response.put("version", "1.0.0");
        response.put("docs", "http://localhost:8080/api/books");
        return response;
    }
}

Bước 6: Chạy Ứng Dụng

Cách 1: Dùng Maven

# Clean và compile
./mvnw clean compile
 
# Chạy ứng dụng
./mvnw spring-boot:run

Windows:

mvnw.cmd spring-boot:run

Cách 2: Dùng IDE

IntelliJ IDEA:

  1. Mở DemoApplication.java
  2. Click nút play màu xanh bên cạnh method main()
  3. Hoặc nhấn Ctrl+Shift+F10 (Windows/Linux) hoặc Cmd+Shift+R (macOS)

VS Code:

  1. Mở DemoApplication.java
  2. Click "Run" phía trên method main()
  3. Hoặc dùng panel "Run and Debug"

Cách 3: Dùng JAR File

# Build JAR
./mvnw clean package
 
# Chạy JAR
java -jar target/demo-0.0.1-SNAPSHOT.jar

Kết Quả Mong Đợi

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.2.2)
 
2024-01-24T10:30:00.123  INFO 12345 --- [main] c.e.demo.DemoApplication: Starting DemoApplication
2024-01-24T10:30:01.456  INFO 12345 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer: Tomcat started on port(s): 8080 (http)
2024-01-24T10:30:01.789  INFO 12345 --- [main] c.e.demo.DemoApplication: Started DemoApplication in 2.1 seconds

Ứng dụng của bạn đang chạy tại http://localhost:8080

Bước 7: Test API

Dùng cURL

# Lấy welcome message
curl http://localhost:8080/
 
# Lấy tất cả sách
curl http://localhost:8080/api/books
 
# Lấy sách theo ID
curl http://localhost:8080/api/books/1
 
# Tạo sách mới
curl -X POST http://localhost:8080/api/books \
  -H "Content-Type: application/json" \
  -d '{"title":"Spring in Action","author":"Craig Walls","year":2022}'
 
# Cập nhật sách
curl -X PUT http://localhost:8080/api/books/1 \
  -H "Content-Type: application/json" \
  -d '{"title":"Clean Code (Updated)","author":"Robert C. Martin","year":2008}'
 
# Xóa sách
curl -X DELETE http://localhost:8080/api/books/1

Dùng Postman

  1. Download Postman từ https://www.postman.com/downloads/
  2. Tạo request mới
  3. Test các endpoints:
    • GET http://localhost:8080/api/books
    • POST http://localhost:8080/api/books với JSON body
    • PUT http://localhost:8080/api/books/1 với JSON body
    • DELETE http://localhost:8080/api/books/1

Dùng Browser

Mở browser và truy cập:

Best Practices

1. Dùng Cấu Trúc Package Phù Hợp

com.example.demo/
├── controller/      # REST endpoints
├── service/         # Business logic
├── repository/      # Truy cập dữ liệu
├── model/           # Domain entities
├── dto/             # Data transfer objects
├── config/          # Configuration classes
└── exception/       # Custom exceptions

2. Tách Biệt Business Logic

Tạo service layer:

package com.example.demo.service;
 
import com.example.demo.model.Book;
import org.springframework.stereotype.Service;
 
import java.util.List;
import java.util.Optional;
 
@Service
public class BookService {
    // Business logic ở đây
    public List<Book> findAll() { /* ... */ }
    public Optional<Book> findById(Long id) { /* ... */ }
    public Book save(Book book) { /* ... */ }
    public void deleteById(Long id) { /* ... */ }
}

3. Dùng DTOs cho API Responses

package com.example.demo.dto;
 
public class BookDTO {
    private Long id;
    private String title;
    private String author;
    // Chỉ những field bạn muốn expose ra API
}

4. Thêm Validation

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Min;
 
public class Book {
    @NotBlank(message = "Title không được để trống")
    private String title;
 
    @NotBlank(message = "Author không được để trống")
    private String author;
 
    @Min(value = 1000, message = "Year phải lớn hơn hoặc bằng 1000")
    private Integer year;
}

Thêm spring-boot-starter-validation vào pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

Dùng @Valid trong controller:

@PostMapping
public ResponseEntity<Book> createBook(@Valid @RequestBody Book book) {
    // ...
}

5. Thêm Exception Handling

package com.example.demo.exception;
 
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
 
@RestControllerAdvice
public class GlobalExceptionHandler {
 
    @ExceptionHandler(BookNotFoundException.class)
    public ResponseEntity<ErrorResponse> handleBookNotFound(BookNotFoundException ex) {
        ErrorResponse error = new ErrorResponse(
            HttpStatus.NOT_FOUND.value(),
            ex.getMessage()
        );
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error);
    }
}

6. Dùng application.yml Thay Vì .properties

Tạo src/main/resources/application.yml:

server:
  port: 8080
 
spring:
  application:
    name: demo
 
logging:
  level:
    root: INFO
    com.example.demo: DEBUG

7. Thêm API Documentation với Swagger

Thêm dependency vào pom.xml:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.3.0</version>
</dependency>

Truy cập documentation tại: http://localhost:8080/swagger-ui.html

Các Vấn Đề Thường Gặp và Giải Pháp

Vấn Đề 1: Port Đã Được Sử Dụng

Lỗi: Port 8080 was already in use

Giải pháp:

# Tìm process đang dùng port 8080 (macOS/Linux)
lsof -i :8080
 
# Kill process
kill -9 <PID>
 
# Hoặc đổi port trong application.properties
server.port=8081

Vấn Đề 2: JAVA_HOME Chưa Được Set

Lỗi: JAVA_HOME not found

Giải pháp:

# macOS/Linux - Thêm vào ~/.zshrc hoặc ~/.bashrc
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
 
# Windows - Set biến môi trường
setx JAVA_HOME "C:\Program Files\Java\jdk-21"

Vấn Đề 3: Maven Build Thất Bại

Lỗi: Failed to execute goal

Giải pháp:

# Xóa Maven cache
./mvnw dependency:purge-local-repository
 
# Clean rebuild
./mvnw clean install -U

Bước Tiếp Theo

Bây giờ bạn đã có ứng dụng Spring Boot hoạt động, hãy khám phá:

  1. Database Integration: Thêm Spring Data JPA với PostgreSQL/MySQL
  2. Security: Implement authentication với Spring Security
  3. Testing: Viết unit và integration tests
  4. Caching: Thêm Redis cho hiệu suất
  5. Messaging: Tích hợp RabbitMQ hoặc Kafka
  6. Deployment: Deploy lên AWS, Azure hoặc Heroku
  7. Microservices: Xây dựng hệ thống phân tán với Spring Cloud

Kết Luận

Bạn đã cài đặt thành công Java, thiết lập Spring Boot và tạo REST API đầu tiên. Phương pháp convention-over-configuration của Spring Boot giúp việc xây dựng ứng dụng production-ready trở nên dễ dàng và nhanh chóng.

Các điểm chính:

  • JDK 21 cung cấp các tính năng Java mới nhất
  • Spring Initializr đơn giản hóa việc thiết lập dự án
  • Maven quản lý dependencies hiệu quả
  • @RestController tạo REST APIs với code tối thiểu
  • DevTools cho phép phát triển nhanh với auto-reload
  • Cấu trúc đúng giúp code dễ bảo trì

Hãy tiếp tục thực hành bằng cách xây dựng các ứng dụng phức tạp hơn, và bạn sẽ thành thạo Spring Boot trong thời gian ngắn!

Tài Liệu Tham Khảo

📬 Đăng ký nhận bản tin

Nhận những bài viết mới nhất qua email mỗi tuần. Không spam, hủy đăng ký bất cứ lúc nào.

Chúng tôi tôn trọng quyền riêng tư của bạn. Hủy đăng ký bất cứ lúc nào.

💬 Comments

Đăng nhập để bình luận

Chúng tôi sẽ không đăng bất cứ điều gì mà không có sự cho phép của bạn.