Tôi muốn tiến hành một chuỗi các yếu tố xử lý và nối chúng lại với nhau thông qua Guice. Giả sử đường dẫn sau:Guice hỗ trợ tiêm sâu hơn xuống hệ thống phân cấp phụ thuộc
interface A
thực hiện bởiclass AImpl
cần một số đầu vàointerface B
thực hiện bởiclass BImpl
nhu cầuA
interface C
thực hiện bởiclass CImpl
nhu cầuB
interface D
thực hiện bởiclass DImpl
nhu cầuC
Sự phụ thuộc của A chỉ có thể được giải quyết trong thời gian chạy chứ không phải ở thời gian cấu hình. Cách tiếp cận thông thường sẽ được sử dụng tiêm được Hỗ trợ trong trường hợp này để tạo ra một nhà máy, mà sẽ đưa các trường hợp mất tích như các thông số, chỉ cần như thế này:
public interface AFactory {
public A createA(String input);
}
Nhưng những gì tôi thực sự muốn là một cái gì đó như thế này:
public interface DFactory {
public D createD(String inputForA);
}
Tôi không muốn chuyển một cách thủ công AImpl
phụ thuộc cụ thể thông qua toàn bộ hệ thống phân cấp. Có thể đạt được điều này với Guice không? Nếu không, cách tốt nhất để phá vỡ vấn đề này một cách thanh lịch trong khi vẫn giữ lại lợi ích của việc tiêm là gì?
Tôi phải nhớ lại sự chấp thuận của tôi, beacuse này: "tiêm nỗ lực cho A, B , C, và D sẽ thất bại bên ngoài PipelineRunner vì thiếu một chuỗi @PipelineInput "Điều này không có tác dụng, bởi vì Guice xác minh Injectors tại thời gian cấu hình và thất bại ngay khi phát hiện ra ràng buộc không hài lòng, đó là lý do tại sao bạn không thể tạo ra hoàn thành Injector, sẽ được hoàn thành bởi con của nó. Mô-đun riêng khắc phục điều này bằng cách sử dụng một chất kết dính đặc biệt. – orsg
Sai lầm của tôi; bạn phải ràng buộc A, B, C và D liền kề với hằng số. Không đáng kể để sửa chữa. Đã cập nhật câu trả lời. –
Được rồi, vì vậy tôi phải ràng buộc tất cả mọi thứ có liên quan đến các đường ống độc quyền bên trong các vòi phun trẻ em và các vòi phun mẹ chỉ biết về nhà máy ("PipelineRunner"). – orsg