Я есть путаница о том, как идти о с выше сценария весной (зависимость контекстную инъекции)Spring Dependency Injection Сценарий
class Login {
String username;
String password;
UserAuthService userAuth;
/*
assume getter and setter
methods for above private
properties here
*/
}
UserAuthService является интерфейс, который имеет логическое метод Validate (String имя пользователя, String пароль);
Он реализуется службой BasicAuthService, LDAPAuthService, MockBasicAuthService, MockLDAPAuthService; Также предположим, что BasicAuthServie имеет свойство serverAddress, как строку, которая имеет IP-адрес сервера аутентификации, , то же самое с LDAPAuthService.
контекст моего вопроса является Dependency Injection и Spring,
я понял, что на основе beanconfig файла Spring ('ы МОК) будет впрыснуть один из конкретной реализации UserAuthService.
1. В файле beanconfig мы можем настроить только один ref say() Сценарий: предположим, что в пользовательском интерфейсе пользователь имеет выпадающий список, чтобы выбрать BasicAuth/LDAPAuth. Пользователь выбрал LDAPAuth, как справиться с этим случаем весной? , так как у нас есть hardwired ref = "beanIdBasicAuthService" в файле beanconfig). Есть ли способ динамического изменения ref?
2. Еще немного сложнее (предположим, что ИТ-администратор или так), пользовательский интерфейс теперь предоставляет возможность выбора адреса сервера аутентификации (который является свойством в классе службы аутентификации Basic/LDAP) Снова в файле beanconfig мы бы установили свойства. Как динамически менять его весной? (за исключением явного получения инжектируемого компонента и вызова setterMethod)
Эти сценарии немного запутывают меня. Может ли кто-нибудь объяснить это?