Проблема:
У меня есть два вида:
- sharedloginviewmodel: manges workflow wation (. /> < /li>
tokencreationViewModel: управляет логикой создания токенов (например, проверка формы, создание токенов). < /p>
< /li>
< /ul>
SharedloginViewModel. Скажите SharedLoginViewModel для продвижения рабочего процесса.
Это создает круговую зависимость:
charedloginviewmodel injects tokencreationVewModel (или vice vers). />Spring throws:
currently in creation: Is there an unresolvable circular reference?
What I’ve Пробовал:
1. Прямая инъекция (вызывает круговую зависимость).
2. Весенние события: TokenCreationViewModel Опубликует пользовательское событие, Sharedloginviewmodel слушает. Пользовательский интерфейс:
определил интерфейс loginnavigationservice:
Код: Выделить всё
public interface LoginNavigationService {
void advanceStep();
void cancel();
}
< /code>
sharedloginviewmodel реализует это. < /p>
tokencreationviewmodel инъекции loginnavigationservice вместо Awkward - я не уверен, что это лучшее решение. Хочу:
Чистый способ отделить эти виды. /> [b] sharedloginviewmodel: < /strong> < /p>
@Component
public class SharedLoginViewModel implements LoginNavigationService {
@Override
public void advanceStep() {
// Advance workflow
}
@Override
public void cancel() {
// Cancel workflow
}
}
Код: Выделить всё
@Component
public class TokenCreationViewModel {
private final LoginNavigationService navigationService;
@Autowired
public TokenCreationViewModel(LoginNavigationService navigationService) {
this.navigationService = navigationService;
}
public void handleTokenCreated() {
navigationService.advanceStep();
}
}
Является ли подход LoginNavigationService хорошей практикой?>
Подробнее здесь: https://stackoverflow.com/questions/795 ... vafx-sprin