Tôi vừa mới bắt đầu chơi với Guice và một trường hợp sử dụng tôi có thể nghĩ là trong một bài kiểm tra tôi chỉ muốn ghi đè một ràng buộc duy nhất. Tôi nghĩ rằng tôi muốn sử dụng phần còn lại của các ràng buộc mức sản xuất để đảm bảo mọi thứ được thiết lập đúng và để tránh trùng lặp.Overriding Binding in Guice
Vì vậy, tưởng tượng tôi có Module sau
public class ProductionModule implements Module {
public void configure(Binder binder) {
binder.bind(InterfaceA.class).to(ConcreteA.class);
binder.bind(InterfaceB.class).to(ConcreteB.class);
binder.bind(InterfaceC.class).to(ConcreteC.class);
}
}
Và trong thử nghiệm của tôi, tôi chỉ muốn ghi đè InterfaceC, trong khi vẫn giữ InterfaceA và InterfaceB trong sự khéo léo, vì vậy tôi muốn một cái gì đó như:
Module testModule = new Module() {
public void configure(Binder binder) {
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(new ProductionModule(), testModule);
tôi cũng đã thử những điều sau đây, không có may mắn:
Module testModule = new ProductionModule() {
public void configure(Binder binder) {
super.configure(binder);
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(testModule);
có ai biết nếu nó có thể làm những gì tôi muốn hoặc tôi hoàn toàn sủa cây sai ??
--- Theo dõi: Có vẻ như tôi có thể đạt được những gì tôi muốn nếu tôi tận dụng các thẻ @ImplementedBy trên giao diện và sau đó chỉ cần cung cấp một liên kết trong trường hợp kiểm tra, trong đó hoạt động độc đáo khi có một 1-1 ánh xạ giữa giao diện và triển khai.
Ngoài ra, sau khi thảo luận điều này với một đồng nghiệp dường như chúng ta muốn đi xuống con đường của trọng toàn bộ mô-đun và đảm bảo chúng tôi có các module của chúng tôi được xác định một cách chính xác. Điều này có vẻ như nó có thể gây ra một vấn đề mặc dù một ràng buộc bị thất lạc trong một mô-đun và cần phải được di chuyển, do đó có thể phá vỡ một tải các bài kiểm tra như ràng buộc có thể không còn có sẵn để được overriden.
Giống như cụm từ "sủa cây sai": D –