Bài viết

🌱 Giới thiệu về Spring & Spring Boot

🎯 Spring Framework là gì?

Spring Framework là một framework mã nguồn mở, mạnh mẽ và phổ biến trong cộng đồng Java, được thiết kế để giúp việc phát triển ứng dụng Java enterprise dễ dàng hơn. Spring cung cấp cấu trúc linh hoạt, cho phép xây dựng các ứng dụng theo mô hình hướng đối tượng, module hóa, dễ bảo trì.

📌 Spring ra đời nhằm giải quyết các vấn đề rườm rà trong lập trình Java truyền thống, như việc khởi tạo đối tượng, quản lý phụ thuộc, giao tiếp với cơ sở dữ liệu, bảo mật, v.v.


🧠 IoC Container và Dependency Injection (DI) trong Spring

🔄 IoC (Inversion of Control) là gì?

Inversion of Control là nguyên lý lập trình mà trong đó việc tạo đối tượng và quản lý phụ thuộc không do chính class đảm nhiệm, mà được giao cho container bên ngoài.

Trong Spring, IoC được hiện thực thông qua IoC Container – chịu trách nhiệm:

  • Tạo đối tượng (bean)
  • Quản lý vòng đời của bean
  • Tiêm phụ thuộc giữa các bean (DI)

📦 Bean là gì?

  • Là một đối tượng Java do Spring IoC quản lý.
  • Được đánh dấu bằng các annotation như @Component, @Service, @Repository, @Controller, v.v.

🧩 Dependency Injection (DI) là gì?

Dependency Injection là kỹ thuật giúp “tiêm” đối tượng phụ thuộc vào class thay vì để class tự khởi tạo chúng.

Ví dụ:

1
2
3
4
5
6
7
8
9
@Component
public class UserService {
    private final UserRepository userRepository;

    // Spring sẽ tự động tiêm UserRepository vào đây
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

Annotation @Component đánh dấu class là một bean, và Spring sẽ quét, tạo đối tượng, rồi tiêm tự động (autowire) các phụ thuộc vào constructor hoặc field.

⚙️ Các cách tiêm phụ thuộc trong Spring:

Phương phápMô tả
Constructor InjectionKhuyến khích sử dụng – an toàn, bất biến
Setter InjectionDễ kiểm soát, có thể thay đổi sau khi tạo
Field InjectionNgắn gọn nhưng khó test, ít khuyến khích

📌 Lợi ích của IoC và DI:

  • ✅ Giảm sự phụ thuộc chặt chẽ giữa các lớp (loose coupling)
  • ✅ Dễ bảo trì, mở rộng, kiểm thử (unit test, mock)
  • ✅ Dễ dàng thay thế implementation khác nhau mà không thay đổi code logic chính

🔧 Các module chính của Spring Framework

ModuleMô tả
CoreXử lý Dependency Injection (DI) và Inversion of Control (IoC)
Spring MVCXây dựng web app theo mô hình Model - View - Controller
Spring AOPLập trình hướng khía cạnh (Aspect-Oriented Programming)
Spring SecurityQuản lý xác thực và phân quyền
Spring JDBC / ORMKết nối và thao tác với cơ sở dữ liệu
Spring TestHỗ trợ kiểm thử ứng dụng Spring

⚡ Spring Boot là gì?

Spring Boot là một extension của Spring Framework, giúp tự động cấu hình và đơn giản hóa việc phát triển ứng dụng Spring.

📌 Thay vì phải cấu hình phức tạp hàng loạt file XML, Spring Boot cho phép bạn:

  • Tạo ứng dụng Java nhanh hơn với cấu hình mặc định.
  • Tích hợp sẵn server (Tomcat), không cần triển khai WAR file.
  • Chạy bằng một dòng lệnh duy nhất (java -jar app.jar).
  • Hỗ trợ sẵn các starter, giúp quản lý dependency dễ dàng qua Maven/Gradle.

🚀 So sánh Spring & Spring Boot

Tiêu chíSpring FrameworkSpring Boot
Cấu hìnhPhức tạp (XML, JavaConfig)Tự động, nhanh gọn
Khởi tạo dự ánThủ côngSpring Initializr (https://start.spring.io)
Phụ thuộc (dependency)Chọn và cấu hình thủ côngCó starter hỗ trợ sẵn
Web ServerCần cấu hình ngoài (Tomcat, Jetty)Tích hợp sẵn embedded server
Mục tiêu sử dụngLinh hoạt cho mọi kiểu ứng dụng JavaTối ưu cho RESTful API, Microservices

📦 Spring Boot hỗ trợ gì?

  • ✅ RESTful API (Spring Web)
  • ✅ Giao tiếp DB (Spring Data JPA, JDBC)
  • ✅ Bảo mật (Spring Security)
  • ✅ Kiểm thử (Spring Boot Test)
  • ✅ Cấu hình dễ dàng (application.yml hoặc application.properties)
  • ✅ Tích hợp tốt với Docker, Kubernetes, CI/CD

📱 Ứng dụng thực tế sử dụng Spring Boot

  • Hệ thống API backend cho web & mobile
  • Ứng dụng thương mại điện tử, CRM, ERP
  • Hệ thống tài chính, ngân hàng
  • Microservices cho nền tảng cloud-native
  • Web app nội bộ doanh nghiệp

🛠 Một số lệnh Spring Boot cơ bản

1
2
3
4
5
6
7
8
9
10
11
# Tạo project từ Spring Initializr (UI)
https://start.spring.io

# Chạy ứng dụng (sau khi build bằng Maven)
./mvnw spring-boot:run

# Biên dịch và tạo file jar
./mvnw clean package

# Chạy app
java -jar target/myapp.jar

✅ Ưu điểm khi dùng Spring Boot

✔ Khởi tạo nhanh, cấu hình tối giản
✔ Dễ tích hợp với các công nghệ khác (MySQL, Redis, Kafka…)
✔ Cộng đồng lớn, tài liệu nhiều
✔ Phù hợp cho microservices, RESTful API
✔ Tích hợp tốt với DevOps, CI/CD


🧠 Tổng kết

  • Spring Framework cung cấp nền tảng vững chắc cho việc phát triển ứng dụng Java.
  • Spring Boot giúp đơn giản hóa và tăng tốc độ phát triển ứng dụng.

🚀 Nếu bạn là lập trình viên Java, Spring Boot là công cụ không thể thiếu để xây dựng các ứng dụng hiện đại, nhanh, gọn và mạnh mẽ!

Bài viết này được cấp phép bởi tác giả theo giấy phép CC BY 4.0 .