0

Hiểu về Annotations, Bean, Spring Container & Dependency Injection trong Spring Boot

Nếu bạn đang học Spring hoặc Spring Boot, bạn sẽ thường xuyên nghe thấy các thuật ngữ như:

  • @Component, @Autowired, @Bean
  • Spring container
  • Dependency Injection (DI)
  • Beans

Nhưng thực sự chúng có ý nghĩa gì? Tại sao chúng được sử dụng? Và làm cách nào chúng giúp ứng dụng của bạn trở nên sạch sẽ, mô-đun hóa và mạnh mẽ hơn?

Trong bài viết này, chúng ta sẽ phân tích những khái niệm này theo cách đơn giản nhất.

Annotation trong Spring là gì?

Trong Spring, annotation là những ký hiệu đặc biệt (bắt đầu bằng ký tự @) nhằm báo cho framework Spring thực hiện một hành động nào đó một cách tự động.

✨ Một số annotation phổ biến: image.png

Bean là gì?

Trong Spring, Bean là một đối tượng Java được Spring container quản lý.

Ví dụ:

@Component
public class MyService {
  public void greet() {
    System.out.println("Hello from MyService!");
  }
}

Class MyService trở thành một Spring Bean vì nó được đánh dấu bằng @Component.

Spring Container là gì?

Spring Container là lõi của framework Spring. Nó chịu trách nhiệm:

  • Tạo ra các đối tượng (beans)
  • Quản lý vòng đời của chúng
  • Tiêm dependencies vào chúng
  • Cấu hình chúng dựa vào annotation hoặc XML

Hãy hình dung container giống như bộ não điều khiển toàn bộ ứng dụng Spring của bạn.

Cách hoạt động:

Khi ứng dụng khởi động:

  • Spring quét các class có annotation như @Component, @Service
  • Tạo đối tượng và lưu vào bộ nhớ
  • Kết nối các thành phần với nhau một cách tự động

Dependency Injection (DI) là gì?

Dependency Injection là kỹ thuật cung cấp (tiêm) các phụ thuộc (dependencies) từ bên ngoài, thay vì để đối tượng tự tạo chúng.

Không dùng DI:

MyService service = new MyService(); // Tight coupling

Với DI trong Spring:

@Autowired
MyService service; // Loose coupling

Spring sẽ tự tạo đối tượng MyService và inject nó vào nơi cần thiết.

Tại sao nên dùng Dependency Injection?

  • Liên kết lỏng lẻo – dễ kiểm thử và bảo trì
  • Tăng khả năng mô-đun
  • Code sạch hơn, không cần nhiều từ khóa new

Spring thực hiện DI như thế nào?

Spring hỗ trợ 3 hình thức Dependency Injection: image.png

VD:

@Component
public class Car {
    private Engine engine;

    @Autowired
    public Car(Engine engine) {
        this.engine = engine;
    }
}

Spring sẽ tự động tạo bean Engine và tiêm nó vào Car.

Khi nào nên dùng Annotation & DI trong Spring?

image.png

Kết luận

Hiểu rõ về annotation, bean, Spring container và dependency injection là nền tảng để bạn trở thành một lập trình viên Spring Boot vững vàng.

Những kiến thức này giúp bạn:

  • Viết ứng dụng sạch sẽ, dễ kiểm thử và dễ mở rộng
  • Tập trung vào logic nghiệp vụ thay vì code mẫu lặp đi lặp lại
  • Xây dựng những dự án lớn với ít nỗ lực hơn nhưng vẫn đảm bảo chất lượng cao

🔔 Học một lần, dùng mãi trong mọi dự án backend của bạn.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.