Tôi có lớp này:Guice Beginner - Làm thế nào để ràng buộc các lớp cụ thể?
public class House {
private final Door door;
private final Window window;
private final Roof roof;
@Inject
public House(Door door, Window window, Roof roof) {
this.door = door;
this.window = window;
this.roof = roof;
}
}
đâu Door
, Window
và Roof
là lớp bê tông. Bây giờ nếu tôi muốn thực hiện một mô-đun cho kịch bản này, tôi sẽ làm điều đó như thế này:
public class HouseModule extends AbstractModule {
@Override
protected void configure() {
bind(Door.class).to(Door.class);
bind(Window.class).to(Window.class);
bind(Roof.class).to(Roof.class);
}
}
Nhưng tôi tự hỏi nếu điều này là đúng cách để ràng buộc các lớp bê tông, hoặc nếu có nhiều cách dễ dàng hơn. Tôi cảm thấy có một cách dễ dàng hơn.
EDIT
Chỉ cần cố gắng này ra, và nó dường như không làm việc:
1) Binding points to itself.
at de.tarent.guice.ex._1.HouseModule.configure(HouseModule.java:10)
EDIT 2
Nó có vẻ như không có ràng buộc là cần thiết ở tất cả:
Injector injector = Guice.createInjector();
House house = injector.getInstance(House.class);
Cũng có vẻ như hoạt động.
Mô đun trống ở đâu? Làm thế nào để Guice biết liên quan đến chúng? – djechlin
@djechlin Điều này sẽ phụ thuộc vào cách ứng dụng của bạn được cấu hình. Ví dụ: ứng dụng dựa trên [Play] (https://www.lightbend.com/play-framework) sẽ mong đợi một tệp mô-đun nằm trong gói gốc hoặc có thể định cấu hình thông qua 'play.modules.enabled' trong ứng dụng .conf – Siddhartha