У меня есть этот класс:
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;
}
}
Где Door
, Window
и Roof
- конкретные классы. Теперь, если я хочу реализовать Модуль для этого сценария, я бы сделал это так:
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);
}
}
Но мне интересно, является ли это правильным способом связывания конкретных классов или есть более простые способы. Я чувствую, что есть более легкий путь к этому.
EDIT
Только что попробовал, и, похоже, это не работает:
1) Binding points to itself.
at de.tarent.guice.ex._1.HouseModule.configure(HouseModule.java:10)
РЕДАКТИРОВАТЬ 2
Кажется, что связывание вообще не нужно:
Injector injector = Guice.createInjector();
House house = injector.getInstance(House.class);
Также похоже на работу.