有人可以解释我的事件总线如何工作,我看到了所有关于这个的文档,但我不明白
我会告诉你我想做的事情;所以我有AccountPresenter和AccountView所以在我的视图中我有Button打开窗口,我在其中创建我的帐户,我想要做的是在另一个View Presenter中查看和创建窗口,并且可以在AcccountPresenter中使用eventBus春天vaadin或其他EventBus。我真的不明白这个角色。
谢谢
答案 0 :(得分:0)
对于春季的事件处理,首先应该创建一个类似的事件:
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的Navigator
并调整按钮的ClickListener
以导航到另一个视图。
UI.getCurrent().getNavigator().navigateTo(otherView.getViewName());
结帐https://github.com/khauser/microservices4vaadin/tree/master/microservices/frontend,您可以同时使用这两种方法。使用spring进行事件处理并使用Navigator
。
答案 1 :(得分:0)
在春季, EventBus 实际上遵循Reactor模式。
仅当用户不希望直接从应用程序获得响应时才使用Reactor模式,因为我们仅使用此Reactor演示执行后台作业。
通过使用 EventBus ,堆内存分配给了应用程序,并且它们并行执行任务。
但是Reactor design pattern可以使用最快的非阻塞分派器每秒处理超过15,000,000个事件。
有关详细信息,请检查链接 Spring Reactor Tutorial