有人可以解释一下事件总线是如何工作的吗,我看过所有关于那个的文档,但我不明白
我会给你我想做的;所以我有 AccountPresenter 和 AccountView 所以在我的视图中我有按钮来打开我创建我的帐户的窗口,我想要做的是在另一个 View Presenter 中滑动视图和创建窗口,并且可以在 AcccountPresenter 中使用 eventBus spring vaadin 或其他 EventBus。我真的不明白这个的作用。
谢谢
有人可以解释一下事件总线是如何工作的吗,我看过所有关于那个的文档,但我不明白
我会给你我想做的;所以我有 AccountPresenter 和 AccountView 所以在我的视图中我有按钮来打开我创建我的帐户的窗口,我想要做的是在另一个 View Presenter 中滑动视图和创建窗口,并且可以在 AcccountPresenter 中使用 eventBus spring vaadin 或其他 EventBus。我真的不明白这个的作用。
谢谢
对于春季的事件处理,您首先应该创建一个事件,例如:
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();
}
}
但尽管如此顺利,但在你的情况下,我认为这不是要走的路。相反,您应该使用 VaadinNavigator
并调整ClickListener
您的按钮以导航到另一个视图。
UI.getCurrent().getNavigator().navigateTo(otherView.getViewName());
结帐https://github.com/khauser/microservices4vaadin/tree/master/microservices/frontend,您将拥有两个。使用 spring 进行事件处理并使用Navigator
.
在 Spring EventBus 中实际上遵循了 Reactor 模式。仅当用户不期望应用程序直接响应时才使用 Reactor 模式,因为我们仅使用此 Reactor 演示执行后台作业。
通过使用EventBus,堆内存被分配给应用程序,它们并行执行任务。然而, Reactor 设计模式可以使用最快的非阻塞 Dispatcher 每秒处理超过 15,000,000 个事件。
有关详细信息,请查看链接 Spring Reactor 教程