Inject Ich denke Guice für DI in meiner App zu verwenden, wo ich in der Lage sein sollte, die Implementierungen zur Laufzeit zu tauschen. Ein Beispiel unten vorgesehen ist, um die Anforderung zu veranschaulichen:Inject Abhängigkeiten zur Laufzeit mit Google Guice
class ValidationEngine {
public void validate(ValidationService vs) {}
}
class Client1_ValidationService implements ValidationService {}
class Client2_ValidationService implements ValidationService {}
Einer der obigen Implementierung sollte, sagen basierend auf Client-Namen bestätigen Funktion zur Laufzeit gebunden werden Client1 oder Client2
Ich dachte, die ValidationEngine ändern wie das:
Das Problem mit dem obigen Ansatz besteht darin, dass der Parameter für die Annotation @Named statisch ist; Tatsächlich akzeptieren Annotationen keine Laufzeitwerte. Gibt es in Guice andere Ansätze, um diese Art von Problemen zu lösen?
Dies scheint in Ordnung zu sein. Nur um die Dinge zu klären - wenn ich also 5 Kunden habe, werde ich mit 5 Injektoren enden. Und das Speichern in HashMap kann dazu beitragen, dass die Injektoren die Client-ID verwenden. Ist das ein richtiger Ansatz? –
@giri_col Scheint so. Sie müssen den Injektor für jede 'ValidationService'-Implementierung beibehalten. So etwas - https://gist.github.com/KetothXupack/b4f6786a1590c7a2466be5f9523a564a – vsminkov