Проблема
Я имею два ViewModels:
sharedloginviewmodel: mange hayflow hareflow. Переходы). < /p>
< /li>
tokencreationViewModel: управляет логикой создания токена (например, проверка формы, генерация токенов). < /p>
< /li>
< /ul>
. TokenCreationViewModel должен уведомлять SharedLoginViewModel для продвижения рабочего процесса после успешного создания токена. < /P>
Это создает круговую зависимость: < /p>
sharedloginviewmodel injects tokencreationVewModel (или наоборот). Throw: < /p>
Создание боба с именем 'sharedloginviewmodel': запрошенная фасоль
в настоящее время в создании: есть ли неразрешимая циркулярная ссылка? Прямая инъекция < /strong> < /p>
Вызывает круговую зависимость. < /Li>
< /ul>
2. Весенние события < /strong> < /p>
tokencreationViewModel Опубликовать событие. < /P>
< /li>
sharedloginviewmodel Ссылки и достигает работы. Чувствует перебор для простых шагов рабочих процессов. < /p>
3. Пользовательский интерфейс (loginnavigationservice)
Определено:
Код: Выделить всё
public interface LoginNavigationService {
void advanceStep();
void cancel();
}
< /code>
sharedloginviewmodel реализует этот интерфейс. < /p>
< /li>
< /p>
< /li>
< /p>
wareedlogreationvewmodel. /> < /ul>
Это работает, но кажется неловким. Я не уверен, что это хорошая практика.
[b] Что я хочу [/b]
Чистый способ отделить эти видоидры.
Избегайте циркулярных зависимостей, позволяя TokencreationVewModel для продвижения рабочего блока после успешного креации. Снаски
[b] sharedloginviewmodel: [/b]
@Component
public class SharedLoginViewModel implements LoginNavigationService {
@Override
public void advanceStep() {
// Advance the workflow
}
@Override
public void cancel() {
// Cancel the workflow
}
}
Код: Выделить всё
@Component
public class TokenCreationViewModel {
private final LoginNavigationService navigationService;
@Autowired
public TokenCreationViewModel(LoginNavigationService navigationService) {
this.navigationService = navigationService;
}
public void handleTokenCreated() {
navigationService.advanceStep();
}
}
Подходит ли логиннавигенсервень>
Подробнее здесь: https://stackoverflow.com/questions/795 ... on-without