-1
我有這樣的代碼:吉斯不注射執行時標註
@CostRequest private IRequestUrlRepository costRequestUrlRepository;
和
this.injector = Guice.createInjector(new MainModule());
routingResponseShortRepository = injector.getInstance(IRoutingResponseShortRepository.class);
costRequestUrlRepository = injector.getInstance(IRequestUrlRepository.class);
,這在我的mainModule.java
:
bind(IRequestUrlRepository.class).annotatedWith(CostRequest.class).to(CostRequestUrlRepository.class);
bind(IRequestUrlRepository.class).annotatedWith(RouteRequest.class).to(RoutingRequestUrlRepository.class);
,但我得到這個運行時間錯誤:
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'
我該如何解決這個問題?
我不能註釋
routingResponseShortRepository = injector.getInstance(@CostRequest IRoutingResponseShortRepository.class);
爲什麼拋出錯誤?我在場上有一個註釋。 –
'injector.getInstance(IRequestUrlRepository.class);'這行引發異常,因爲「com.waze.routing.automation.interfaces.IRequestUrlRepository沒有實現被綁定。」這個實現是通過一個特定的('bind(IRequestUrlRepository.class).annotatedWith(RouteRequest.class)'')綁定到IRequestUrlRepository.class。參數的註釋被guice api忽略...請參閱https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Injector.html –
謝謝。有什麼辦法可以更優雅地解決這個問題嗎?有註釋?或者你建議的方式來解決這個問題? –