Spring Framework

Khái niệm về Spring Core Container

  1. Spring Core Container là gì?

    Spring Core Container hoặc IoC Container (Inversion of Control Container) là thành phần chịu trách nhiệm khởi tạo, cấu hình và quản lý vòng đời của các Bean (đối tượng) trong Spring.

    IoC Container hoạt động dựa trên nguyên lý Inversion of Control, nghĩa là thay vì các đối tượng tự tạo ra hoặc quản lý phụ các thuộc của mình, Container sẽ inject (tiêm) các phụ thuộc đó từ bên ngoài vào. Mục tiêu của nguyên lý này là giúp cho việc phát triển, kiểm thử, nâng cấp, bảo trì ứng dụng dễ dàng và thuận tiện hơn.

  2. Bean là gì?

    Trong Spring, Bean là một đối tượng được Container quản lý. Các Bean thường được định nghĩa trong file cấu hình XML hoặc bằng annotation trong mã nguồn Java. Mỗi Bean có thể khai báo các phụ thuộc cần thiết và Container sẽ tự động tiêm vào khi khởi tạo.

    Chúng ta sẽ thảo luận chi tiết về Bean trong bài sau.

  3. Nguyên lý IoC

    Như đã đề cập bên trên, IoC là một nguyên lý thiết kế trong đó việc kiểm soát luồng và các phụ thuộc của đối tượng được chuyển giao cho Container. Theo đó mỗi khi một đối tượng được khởi tạo, các phụ thuộc của nó sẽ được Container inject (tiêm) vào bằng một trong ba phương pháp:

    • Tiêm vào Constructor của lớp.
    • Tiêm vào Setter của lớp.
    • Tiêm vào Field của lớp.

    Các phương pháp này sẽ được thảo luận chi tiết ở bài học sau.

  4. Các loại IoC Container trong Spring

    Spring cung cấp hai interface chính đại diện cho IoC Container

    • BeanFactory: Đây là Container cơ bản nhất, chỉ cung cấp các chức năng IoC đơn giản, thường được sử dụng trong các ứng dụng có yêu cầu tài nguyên nhẹ. Container này khởi tạo Bean theo kiểu Lazy Initialization (chỉ tạo Bean khi thực sự cần dùng).
    • ApplicationContext: Là phiên bản mở rộng của BeanFactory, cung cấp nhiều tính năng nâng cao như internationalization, event handling, AOP, Bean autowiring, v.v. Container này khởi tạo Bean theo kiểu Eager Initialization (tạo Bean ngay khi khởi động Container).
  5. Cơ chế hoạt động của IoC Container

    Quá trình hoạt động của Spring IoC Container bao gồm các bước sau đây:

    • Đọc cấu hình (XML, annotation, hoặc Java config): Xác định các Bean cần được khởi tạo, phương pháp khởi tạo, danh sách các phụ thuộc và ánh xạ cấu hình (nếu có).
    • Khởi tạo các Bean và xác định các phụ thuộc: Tạo instance của Bean, tiêm các phụ thuộc, thực thi callback (nếu có) và đưa Bean vào Container để quản lý.
    • Thực hiện tiêm các phụ thuộc (Dependency Injection): Khi một Bean cần sử dụng một Bean khác (ví dụ UserService cần UserRepository), Spring sẽ tìm và tiêm đúng Bean phụ thuộc đó vào vị trí tương ứng trong quá trình khởi tạo theo một trong ba phương pháp nêu trên (Constructor, Setter hoặc Field).
    • Quản lý vòng đời của Bean: Spring IoC Container sẽ theo dõi, điều khiển toàn bộ quá trình tạo, sử dụng và hủy Bean trong thời gian thực thi ứng dụng.
  6. Kết luận

    Spring Core Container là nền tảng thiết yếu của Spring Framework, giúp tự động hóa quản lý đối tượng và các phụ thuộc giữa chúng. Nắm vững IoC Container không chỉ giúp bạn phát triển ứng dụng một cách hiệu quả hơn mà còn là cơ sở để bạn làm việc với các tính năng nâng cao như Spring như AOP, Data Access, Security, v.v. Một số lợi ích của IoC Container có thể kể đến như:

    • Giảm sự phụ thuộc giữa các thành phần trong ứng dụng.
    • Tăng khả năng tái sử dụng và dễ dàng thay thế các thành phần.
    • Dễ dàng kiểm thử các lớp riêng biệt nhờ khả năng inject mock.
    • Quản lý vòng đời và cấu hình tập trung và rõ ràng.