2009-04-03 34 views
5

Tôi đang viết thư viện java sẽ được ứng dụng hiện có sử dụng. Tôi đang sử dụng tiêm phụ thuộc để kiểm tra dễ dàng hơn và tôi quen thuộc với Spring nên tôi đã định sử dụng nó để quản lý việc tiêm phụ thuộc trong khi thử nghiệm. Các ứng dụng cuối cùng sẽ sử dụng thư viện không dựa trên Spring, tuy nhiên, cũng không sử dụng bất kỳ thùng chứa IoC/DI nào của bất kỳ loại hiện tại nào. Câu hỏi của tôi là, cách tiếp cận tiêm chích phụ thuộc tốt nhất nào nếu Spring hoặc Guice không được sử dụng? Tôi có nên xem xét một cái gì đó giống như một phương pháp nhà máy để nhanh chóng và dây các đối tượng? Các phụ thuộc là tất cả bên trong thư viện, do đó, dường như không thích hợp để ứng dụng khởi tạo từng phụ thuộc để tạo đối tượng chính.Sử dụng tiêm phụ thuộc trong thư viện

Trả lời

4

phương pháp tốt nhất để tiêm phụ thuộc nếu Spring hoặc Guice không được sử dụng là gì?

Nếu thư viện của bạn được viết bằng thành ngữ thân thiện với người dùng. Nó sẽ khá dễ sử dụng như một API java khốc liệt. Hãy nghĩ về kinh nghiệm quá khứ của bạn với mùa xuân. Có một số thư viện ở đó phù hợp hoàn hảo với mô hình lò xo nhưng được viết trước thời gian mùa xuân. Tôi không thấy không có gì xấu với một số new, theo sau là một số setXX, sau đó gọi tới phương thức thực tế hoạt động. Chỉ cần cẩn thận hơn, vì, trong số những thứ khác, khách hàng của bạn có thể quên gọi các phương thức init của mùa xuân để gọi điện một cách đáng tin cậy.

Tôi có nên xem xét điều gì đó giống như phương pháp nhà máy để khởi tạo và nối dây các đối tượng không? Các phụ thuộc là tất cả bên trong thư viện, do đó, dường như không thích hợp để ứng dụng khởi tạo từng phụ thuộc để tạo đối tượng chính.

Hãy để ứng dụng khách quyết định điều đó. Bạn đang cung cấp một thư viện. Cho phép ứng dụng khách API gắn các đối tượng của riêng nó. Cung cấp một ví dụ. Sau đó, ví dụ tương tự có thể được sử dụng để tạo phương thức factory trên miền của khách hàng. Có lẽ ứng dụng khách có cách riêng của nó để cấu hình chính nó, và nó sẽ là mong muốn nếu API thư viện của bạn cung cấp đủ linh hoạt để tận dụng điều đó.

Hoặc có thể bạn có thể bao gồm guice. Giấy phép là Apache. Cũng giống như toàn bộ mảnh Java.

Các vấn đề liên quan