Przeczytałem https://github.com/google/guice/wiki/AssistedInject, ale nie mówi, jak przekazać wartości argumentów AssistedInject. Jak wyglądałoby wywołanie injector.getInstance()?Jak korzystać z AssistedInject Guice?
Odpowiedz
Sprawdź klasę javadoc z FactoryModuleBuilder.
AssistedInject
umożliwia dynamiczną konfigurację klasy Factory
zamiast samodzielnego kodowania. Jest to często przydatne, gdy masz obiekt, który ma zależności, które powinny zostać wstrzyknięte, oraz pewne parametry, które muszą zostać określone podczas tworzenia obiektu.
przykład z docummentaiton jest RealPayment
public class RealPayment implements Payment {
@Inject
public RealPayment(
CreditService creditService,
AuthService authService,
@Assisted Date startDate,
@Assisted Money amount) {
...
}
}
Zobacz, że CreditService
i AuthService
powinien być wprowadzony przez pojemnika, lecz startDate i ilość powinna być określona przez programistę w tworzeniu np.
Więc zamiast wstrzykiwania Payment
jesteś Wstrzykiwanie PaymentFactory
z parametrami, które są oznaczone jako @Assisted
w RealPayment
public interface PaymentFactory {
Payment create(Date startDate, Money amount);
}
A fabryka należy zbindowanych
install(new FactoryModuleBuilder()
.implement(Payment.class, RealPayment.class)
.build(PaymentFactory.class));
skonfigurowanego fabrycznie mogą być wstrzykiwane w Twoje zajęcia.
@Inject
PaymentFactory paymentFactory;
i używane w kodzie
Payment payment = paymentFactory.create(today, price);
- 1. Jak korzystać z wtryskiwacza Guice?
- 2. Co to jest odpowiednik Spring w FactoryModuleBuilder, @AssistedInject i @Assisted w Guice?
- 3. Ogólne wytyczne dotyczące wydajności Guice
- 4. Jak podłączyć Jacksona ObjectMappera z Guice/Jersey
- 5. Używanie Guice z kołowymi zależnościami
- 6. Moduł Guice z parametrami typu
- 7. Jak korzystać z iniekcji zależności w serwletu?
- 8. Google Guice: Dostawca z parametrami
- 9. Wyjątek ClassNotFoundException z Guice 2.0
- 10. Jak przetestować implementacje Guice AbstractModule?
- 11. Jak określić klasyfikator w zależności zależności gradle?
- 12. Guice dynamiczne wstrzykiwanie z niestandardową adnotacją
- 13. Guice: implikacje zastrzyku pola
- 14. Guice kontra AspectJ
- 15. auto scan for guice
- 16. Appengine z Google Cloud Endpoints i Guice
- 17. Wskaźnik zerowania guice Guine
- 18. Jak korzystać z find_module?
- 19. Jak korzystać z RedirectToRoute?
- 20. Jak korzystać z WSDL
- 21. Jak korzystać z kCTSuperscriptAttributeName?
- 22. Jak korzystać z pgdb.executemany?
- 23. Jak korzystać z org.mockito.AdditionalMatchers.gt?
- 24. Jak korzystać z createTransport?
- 25. Jak korzystać z UIRemoteNotificationTypeVoIP?
- 26. Jak korzystać z onResume()?
- 27. Jak korzystać z phantomjs?
- 28. Jak korzystać z Form.ShowDialog?
- 29. jak korzystać z particles.js?
- 30. Jak korzystać z MonadRandom?
pokrewnych, poniższe odpowiedzi nie są obejmujące przypadki, w których on sam typ jest używany wielokrotnie. https://stackoverflow.com/questions/23553865/using-assisted-inject-with-multiple-params-of-same-type-named-params – Alex