Guice Beginner - How to bind concrete classes?

У меня есть этот класс:

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)

EDIT 2

Похоже, что привязка вообще не нужна:

Injector injector = Guice.createInjector();
House house = injector.getInstance(House.class);

Тоже, похоже, работает.

42
задан helpermethod 13 December 2011 в 09:17
поделиться