Ich habe bin eine Verwirrung darüber, wie mit obigem Szenario in Spring (Dependency Injection Kontext)Frühling Dependency Injection Szenario
class Login {
String username;
String password;
UserAuthService userAuth;
/*
assume getter and setter
methods for above private
properties here
*/
}
UserAuthService ist eine Schnittstelle, die eine Boolesche Methode Validate muss gehen über (String username, String password);
Es wird von BasicAuthService, LDAPAuthService, MockBasicAuthService, MockLDAPAuthService implementiert; Auch angenommen, dass BasicAuthServie eine Eigenschaft serverAddress hat, als Zeichenfolge, die die IP-Adresse des Authentifizierungsservers hat, gleich mit LDAPAuthService.
Kontext meiner Frage ist Dependency Injection und Frühling,
ich verstanden, dass basierend auf beanconfig Datei Spring ('s IOC) wird eines der konkreten Umsetzung von UserAuthService injizieren.
1. In der Beanconfig-Datei können wir nur einen Verweis konfigurieren say() Szenario: Angenommen, Benutzer in UI haben ein Dropdown-Menü, um BasicAuth/LDAPAuth auszuwählen. Benutzer haben LDAPAuth ausgewählt, wie Sie mit diesem Fall im Frühjahr umgehen? , da wir ref = "beanIdBasicAuthService" in der Beanconfig-Datei fest verdrahtet haben. Gibt es eine Möglichkeit, den Ref dynamisch zu ändern?
2. Etwas komplizierter (annehmen Sie IT-Administrator oder so), UI bietet jetzt Option zum Auswählen der Adresse des Authentifizierungsservers (was eine Eigenschaft in der Basic/LDAP Auth Service Class ist) Wieder in Beanconfig-Datei hätten wir die Eigenschaften fest verdrahtet. Wie kann man es im Frühling dynamisch verändern? (Anders als explizit die injizierte Bean zu erhalten und setterMethod aufzurufen)
Diese Szenarien sind ein bisschen verwirrend für mich. Kann mir bitte jemand das erklären?