Logo vi.removalsclassifieds.com

Sự khác biệt giữa Constructor Injection và Setter Injection (Với Bảng)

Mục lục:

Anonim

Khi việc phân giải phụ thuộc được thực hiện bởi một tác nhân bên ngoài chứ không phải chính lớp, thì nó được gọi là tiêm phụ thuộc. Có hai cách tiêu chuẩn để tiêm phụ thuộc đang được hỗ trợ trong khung công tác Spring, thông qua một đối số phương thức khởi tạo hoặc thông qua sử dụng phương thức setter. Loại tiêm phụ thuộc trước đây được gọi là tiêm hàm tạo, và loại sau được gọi là tiêm định vị. Cả hai phương pháp đều được sử dụng cho các mục đích khác nhau và có ưu và nhược điểm riêng.

Constructor Injection so với Setter Injection

Sự khác biệt giữa Constructor injection và Setter injection là constructor injection sử dụng constructor và mặt khác, setter injection sử dụng các phương thức setter để chèn phụ thuộc. Hai loại cách tiêm này khác nhau trên cơ sở một số tham số như bảo mật, khả năng đọc, hỗ trợ tính bất biến, v.v.

Chèn hàm tạo là một kiểu tiêm phụ thuộc trong khuôn khổ lò xo sử dụng một hàm khởi tạo để tiêm phụ thuộc. Các phần phụ thuộc được yêu cầu cho bất kỳ lớp nào được chỉ định làm tham số của phương thức khởi tạo của lớp cụ thể đó. Việc tiêm hàm tạo không cho phép nhà phát triển xây dựng bất kỳ đối tượng nào trừ khi tất cả các phần phụ thuộc đã sẵn sàng và do đó, nó đảm bảo việc tiêm phụ thuộc thành công.

Phương pháp tiêm setter là một kiểu tiêm phụ thuộc trong khuôn khổ lò xo sử dụng các phương pháp setter để tiêm phụ thuộc. Nó có các phương thức setter của dạng setXXX () trong đó XXX biểu thị một phần phụ thuộc đưa các đối tượng phụ thuộc vào máy khách. Cách giải quyết sự phụ thuộc này rất phổ biến trong Spring framework.

Bảng so sánh giữa Constructor Injection và Setter Injection

Các thông số so sánh

Constructor Injection

Setter Injection

Sự phụ thuộc được tiêm vào Nó sử dụng một hàm tạo. Nó sử dụng các phương thức setter.
Khả năng đọc Nó không thể đọc được nhiều so với setter. Nó là dễ đọc hơn.
Ghi đè thuộc tính Không thể ghi đè phần phụ thuộc. Có thể ghi đè các phụ thuộc nhất định.
Các thay đổi Nó luôn tạo ra một thể hiện bean mới. Nó không tạo bất kỳ cá thể bean mới nào.
Bất biến Nó hỗ trợ tính bất biến. Nó không hỗ trợ.

Constructor Injection là gì?

Chèn hàm tạo là một trong những cách tiêu chuẩn để giải quyết sự phụ thuộc trong khuôn khổ Spring, định nghĩa tĩnh danh sách các phần phụ thuộc cần thiết cho các lớp bằng cách gán chúng làm tham số cho phương thức khởi tạo của lớp. Tất cả các lớp yêu cầu phụ thuộc phải có một phương thức khởi tạo công khai bên trong chúng, lấy một thể hiện làm đối số của phương thức khởi tạo và phương thức khởi tạo đó nhất thiết phải là phương thức khởi tạo công khai duy nhất bên trong lớp đó.

Nếu cần nhiều hơn một phụ thuộc, thì các đối số bổ sung sẽ được thêm vào cùng một hàm tạo. Để đảm bảo rằng sự phụ thuộc được đưa vào hoàn toàn, cần tuân theo một nguyên tắc trách nhiệm duy nhất, trong đó các thành viên chỉ nên làm một việc. Hàm khởi tạo nên được giữ không có bất kỳ logic nào khác để làm cho hàm tạo của các lớp nhanh hơn và đáng tin cậy hơn.

Một thực tế quan trọng của việc chèn hàm tạo là các đối tượng sẽ không được xây dựng trừ khi tất cả các phần phụ thuộc đã sẵn sàng. Vì nó tạo ra các thể hiện mới mỗi khi hàm tạo đang được gọi, do đó không thể ghi đè lên nó. Về cơ bản, cấu trúc chèn được sử dụng trong các trường hợp cần thiết phải tạo các đối tượng với tất cả các thành phần phụ thuộc. Đây là cách dễ áp ​​dụng nhất và dễ dàng nhất để triển khai các phần phụ thuộc một cách chính xác.

Setter Injection là gì?

Đưa vào setter là một trong những cách tiêu chuẩn để giải quyết sự phụ thuộc trong khuôn khổ Spring, sử dụng các phương thức setter để giải quyết các phụ thuộc. Các phương thức setter có dạng setXXX (), trong đó XXX chỉ định phần phụ thuộc cần được đưa vào. Trong loại phương pháp tiêm này, đầu tiên, đối tượng được tạo, và sau đó, phụ thuộc được tiêm. Để cấu hình Spring, các tệp XML được sử dụng và do đó, khả năng đọc là một mối quan tâm lớn.

Vì các phương thức setter có một dạng tên phương thức cụ thể, nó nâng cao khả năng đọc theo nhiều cách. Khi cần tiêm số lượng phụ thuộc lớn hơn thì kiểu tiêm setter rất được ưu chuộng và ưa chuộng hơn so với các loại phương pháp tiêm khác. Ngoài ra, bằng cách sử dụng setter injection, các nhà phát triển có thể dễ dàng ghi đè và thay đổi các giá trị vì nó không tạo ra một thể hiện bean mới mỗi lần. Hạn chế duy nhất của tiêm setter là nó không đảm bảo tiêm phụ thuộc hoàn toàn.

Không có gì đảm bảo liệu một đối tượng nhất định có được tiêm phụ thuộc hay không. Nói cách khác, nó có nghĩa là có thể có một đối tượng có sự phụ thuộc không đầy đủ. Tiêm định vị là cách linh hoạt nhất và phổ biến nhất để thực hiện tiêm phụ thuộc.

Sự khác biệt chính giữa tiêm Constructor và tiêm Setter

Sự kết luận

Điểm mấu chốt là cả hai cách tiêm phụ thuộc đều cho phép nó là tiêm hàm tạo hoặc tiêm setter, đều có ưu và nhược điểm riêng. Ngoài ra, Spring không cấm các nhà phát triển sử dụng bất kỳ ai ngoài người xếp hạng. Họ được sử dụng miễn phí cả chèn phương thức khởi tạo và chèn bộ định tuyến trong một tệp cấu hình Spring. Điều quan trọng cần lưu ý khi tiêm phụ thuộc là sử dụng hàm khởi tạo khi có nhu cầu bắt buộc tạo các đối tượng với tất cả các phụ thuộc và sử dụng tiêm setter khi số lượng phụ thuộc nhiều hơn hoặc nếu có nhu cầu tốt hơn khả năng đọc.

Người giới thiệu

  1. https://digitalcommons.calpoly.edu/csse_fac/34/
  2. https://books.google.com.vn/books?hl=vi&lr=&id=InfRDwAAQBAJ&oi=fnd&pg=PA63&dq=constructor+injection&ots=Hon_bCw-Kv&sig=VdsD_S0lCfP3D8idI8q4F6RnhoE

Sự khác biệt giữa Constructor Injection và Setter Injection (Với Bảng)