Constructor Injection khác gì với Property Injection và Method Injection, khi nào nên sử dụng loại nào?
Các hình thức Dependency Injection phổ biến
- Constructor Injection
- Bản chất: Truyền các phụ thuộc thông qua phương thức khởi tạo (Constructor) của lớp.
- Đặc điểm: Đây là tiêu chuẩn vàng trong thiết kế phần mềm. Đảm bảo rằng đối tượng sau khi được khởi tạo đã ở trạng thái hoàn chỉnh và sẵn sàng sử dụng (không bị phụ thuộc vào trạng thái null).
- Khuyên dùng: Mặc định nên sử dụng hình thức này cho 90% các trường hợp.
- Property Injection (Setter Injection)
- Bản chất: Truyền phụ thuộc thông qua các thuộc tính (properties) có thể gán giá trị sau khi đối tượng đã được khởi tạo.
- Đặc điểm: Cho phép thay đổi dependency linh hoạt tại runtime, nhưng đối tượng có thể rơi vào trạng thái chưa hoàn thiện (incomplete state) nếu quên gán giá trị.
- Trường hợp sử dụng: Dùng cho các phụ thuộc tùy chọn (optional dependencies) hoặc khi làm việc với một số framework cũ có giới hạn về constructor.
- Method Injection
- Bản chất: Truyền phụ thuộc trực tiếp qua tham số của một phương thức cụ thể.
- Trường hợp sử dụng: Khi phụ thuộc đó chỉ cần thiết cho một hành động duy nhất và không nên lưu trữ làm trạng thái nội bộ của lớp.
Lưu ý thực chiến
Junior cần tránh lạm dụng Property Injection vì nó làm giảm tính bao bọc (encapsulation) của đối tượng và khiến việc kiểm tra lỗi null trở nên khó khăn.
Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp
Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.
Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)
Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?
Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.
Kiểm Tra CV Chuẩn ATS Miễn Phí
Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.
Câu hỏi dependency injection liên quan cùng chủ đề
- Làm thế nào để tối ưu hóa hiệu năng và quản lý Constructor Injection type trong dự án Dependency Injection? Entry
- Dependency Injection là gì và tại sao lập trình viên cấp độ Junior cần phải nắm vững khái niệm này khi phát triển ứng dụng Enterprise? Junior
- Sự khác biệt giữa ba vòng đời của service trong Dependency Injection Container gồm Transient, Scoped và Singleton là gì? Junior
- Làm thế nào để viết Unit Test cho một lớp có sử dụng Dependency Injection mà không cần cấu hình IoC Container phức tạp? Junior
- Anti-pattern 'Service Locator' là gì và tại sao việc sử dụng nó thay vì Dependency Injection lại gây hại cho khả năng bảo trì mã nguồn? Junior


