Как работает EventBus в загрузке MVP и Spring?
Может кто-нибудь объяснить мне, как работает Eventbus, я видел все документы об этом, но я не понял
Я дам тебе то, что я хочу сделать; Итак, у меня есть AccountPresenter и AccountView, так что, на мой взгляд, у меня есть кнопка, чтобы открыть окно, в котором я создаю свою учетную запись, что я хочу сделать, это ускорить просмотр и создание окна в другом View Presenter и сделать это в AcccountPresenter с помощью eventBus. весеннего ваадина или другого EventBus. Я не очень понимаю роль этого.
Спасибо
1 ответ
В Spring EventBus фактически следует шаблону Reactor. Шаблон Reactor должен использоваться только тогда, когда пользователь не ожидает отклика непосредственно от приложения, поскольку мы выполняем только фоновые задания, используя эту демонстрацию Reactor.
Используя EventBus, куча памяти назначается приложению, и они выполняют задачи параллельно. Однако шаблон проектирования Reactor может обрабатывать более 15 000 000 событий в секунду с помощью самого быстрого неблокирующего диспетчера.
Для получения подробной информации, пожалуйста, проверьте ссылку на учебник Spring Reactor
Для обработки событий весной вы должны сначала создать событие, подобное:
public static class CloseOpenWindowsEvent extends ApplicationEvent {
private static final long serialVersionUID = -4672026509699779702L;
public CloseOpenWindowsEvent(Object source) {
super(source);
// TODO Auto-generated constructor stub
}
}
Тогда вам нужно что-то опубликовать ваше событие:
@Autowired
private ApplicationEventPublisher eventPublisher;
...
eventPublisher.publishEvent(new CloseOpenWindowsEvent(MyUI.getCurrent()));
и кто-то, кто слушает это:
@EventListener
public void closeOpenWindows(final CloseOpenWindowsEvent event) {
for (Window window : getWindows()) {
window.close();
}
}
Но как бы гладко это ни было, в твоем случае я думаю, что это не тот путь. Вместо этого вы должны использовать Vaadin's Navigator
и настроить ClickListener
вашей кнопки, чтобы перейти к другому виду.
UI.getCurrent().getNavigator().navigateTo(otherView.getViewName());
Оформить заказ https://github.com/khauser/microservices4vaadin/tree/master/microservices/frontend, там вы бы оба на месте. Обработка событий с пружиной и использование Navigator
,