tôi chỉ cần nhét xung quanh với Google Guice cho Dependency Injection và bắt đầu tích hợp nó vào ứng dụng hiện có của tôi. Càng xa càng tốt. Tôi có nhiều lớp cần, bên cạnh các phụ thuộc của họ, Strings, DataSources, và cetera. Tôi biết có NamedBindings, nhưng tôi thực sự không muốn tạo chú thích cho mọi String đơn giản mà tôi phải truyền cho hàm tạo cho mỗi lớp. Sau đó, có một thứ gọi là AssistedInject, tạo ra các cài đặt Factory cho tôi. Wow, nhưng tôi vẫn phải xác định giao diện của nhà máy. Thats okay cho các lớp học DO CÓ phụ thuộc, nhưng những gì về lớp học này ví dụ:Tiêm phụ thuộc với Guice: Thứ gì đó không có trong bất kỳ hướng dẫn nào
public class FooBarClass {
public FooBarClass(String name, String anotherOne) {
// Some stuff
}
}
Có trường hợp tôi nghi ngờ làm thế nào để sử dụng Guice hoặc, nói chung, DI đúng cách. "Thường thì tôi nghe: Khung XYZ là mới mới." Nhưng điều này ngầm định rằng tôi phải tạo mỗi cá thể với khung DI.
Chỉ một trường hợp là bắt buộc
Nếu tôi chỉ cần một trường hợp của lớp học này thì sao? Lớp này hoàn toàn không phụ thuộc bên cạnh hai chuỗi. Hãy suy nghĩ về một Hook tắt máy sẽ được instanciated chỉ một lần và thông qua cho JVM như Shutdown Hook của tôi. Tôi có nên tạo trường hợp này với Guice không? Điều này trông rất câm với tôi, bởi vì không có gì để tiêm, nhưng tôi phải viết một giao diện nhà máy để vượt qua Hướng dẫn cả hai tham số và phải tạo một giao diện cho FooBarClass của tôi để sử dụng DI.
Nhiều trường hợp được yêu cầu
Điều tương tự cũng áp dụng cho trường hợp tôi cần nhiều phiên bản của lớp này. Không có phụ thuộc, nhưng tôi phải tạo ra một loạt các mã boilerplate để có được không có gì ra khỏi nó. Điều này có vẻ sai với tôi.
Vì vậy, làm thế nào tôi có nghĩa vụ phải sử dụng DI và/hoặc Guice?
Cảm ơn rất nhiều!