Ich habe https://github.com/google/guice/wiki/AssistedInject gelesen , aber es wird nicht angegeben, wie die Werte der AssistedInject-Argumente übergeben werden sollen. Wie würde der Aufruf vonjektor.getInstance () aussehen?
84
Ich habe https://github.com/google/guice/wiki/AssistedInject gelesen , aber es wird nicht angegeben, wie die Werte der AssistedInject-Argumente übergeben werden sollen. Wie würde der Aufruf vonjektor.getInstance () aussehen?
Antworten:
Überprüfen Sie das Javadoc der FactoryModuleBuilder- Klasse.
AssistedInject
Mit dieser Option können Sie dieFactory
Klasse dynamisch konfigurieren , anstatt sie selbst zu codieren. Dies ist häufig nützlich, wenn Sie ein Objekt haben, dessen Abhängigkeiten eingefügt werden sollen, und einige Parameter, die beim Erstellen des Objekts angegeben werden müssen.Beispiel aus der Dokumentation ist a
RealPayment
Sehen Sie sich das an
CreditService
undAuthService
sollten vom Container injiziert werden, aber startDate und die Menge sollten von einem Entwickler während der Instanzerstellung angegeben werden.Anstatt also a zu injizieren, injizieren
Payment
Sie aPaymentFactory
mit Parametern, die als@Assisted
in markiert sindRealPayment
Und eine Fabrik sollte gebunden werden
Die konfigurierte Fabrik kann in Ihre Klassen injiziert werden.
und in Ihrem Code verwendet
quelle
RealPayment
muss keine Schnittstelle implementiert werden.