ich diesen Code haben:guice nicht Implementierung injizieren, wenn sie mit Annotation
@CostRequest private IRequestUrlRepository costRequestUrlRepository;
und
this.injector = Guice.createInjector(new MainModule());
routingResponseShortRepository = injector.getInstance(IRoutingResponseShortRepository.class);
costRequestUrlRepository = injector.getInstance(IRequestUrlRepository.class);
und dies in meinem mainModule.java
:
bind(IRequestUrlRepository.class).annotatedWith(CostRequest.class).to(CostRequestUrlRepository.class);
bind(IRequestUrlRepository.class).annotatedWith(RouteRequest.class).to(RoutingRequestUrlRepository.class);
aber ich habe diesen Lauf Zeitfehler:
Exception in thread "main" com.google.inject.ConfigurationException: Guice configuration errors:
1) No implementation for com.waze.routing.automation.interfaces.IRequestUrlRepository was bound.
while locating com.waze.routing.automation.interfaces.IRequestUrlRepository
1 error
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1035)
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:994)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1044)
at com.waze.routing.automation.runners.parallel.costRequest.BlParallelGenerator.<init>(BlParallelGenerator.java:76)
at com.waze.routing.automation.runners.parallel.costRequest.BlParallelGenerator.main(BlParallelGenerator.java:44)
Disconnected from the target VM, address: '127.0.0.1:64132', transport: 'socket'
Wie kann ich das beheben?
kann ich nicht kommentieren die
routingResponseShortRepository = injector.getInstance(@CostRequest IRoutingResponseShortRepository.class);
Warum wird der Fehler trotzdem ausgelöst? Ich habe eine Anmerkung auf dem Feld. –
'injektor.getInstance (IRequestUrlRepository.class);' Diese Zeile löst die Ausnahme aus, weil "Keine Implementierung für com.waze.routing.automation.interfaces.IRequestUrlRepository gebunden wurde." Die Implementierung ist für IRequestUrlRepository.class mit einem bestimmten ('bind (IRequestUrlRepository.class) .annotatedWith (RouteRequest.class)') gebunden. Und die Annotation des Parameters wird von der guice api ignoriert ... siehe https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Injector.html –
Vielen Dank. Gibt es einen Weg, dies eleganter zu lösen? mit Anmerkung? oder Ihr vorgeschlagener Weg es den Weg zu lösen? –