mam tej klasy:Guice Beginner - jak wiązać konkretne klasy?
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;
}
}
Gdzie Door
, Window
i Roof
konkretne zajęcia. Teraz, jeśli chcę, aby wdrożyć moduł do tego scenariusza, zrobiłbym to tak:
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);
}
}
Ale zastanawiam się, czy jest to właściwy sposób powiązać konkretne zajęcia, lub jeśli istnieją prostsze sposoby. Czuję, że jest łatwiejszy sposób na to.
EDIT
Właśnie próbowałem, i nie wydaje się działać:
1) Binding points to itself.
at de.tarent.guice.ex._1.HouseModule.configure(HouseModule.java:10)
Edytowanie 2
Wydaje się, że nie jest wiążąca w ogóle potrzebne:
Injector injector = Guice.createInjector();
House house = injector.getInstance(House.class);
Wydaje się również działać.
Gdzie jest pusty moduł? Jak Guice wie, jak je odnieść? – djechlin
@dłamlin To zależy od konfiguracji Twojej aplikacji. Na przykład aplikacja oparta na [Play] (https://www.lightbend.com/play-framework) będzie oczekiwać, że taki plik modułu znajdzie się w pakiecie głównym lub będzie można go konfigurować za pomocą 'play.modules.enabled' w aplikacji .conf – Siddhartha