eventBus如何在MVP和Spring启动中运行?

时间:2017-02-21 14:10:03

标签: spring-boot vaadin mvp event-bus vaadin4spring

有人可以解释我的事件总线如何工作,我看到了所有关于这个的文档,但我不明白

我会告诉你我想做的事情;所以我有AccountPresenter和AccountView所以在我的视图中我有Button打开窗口,我在其中创建我的帐户,我想要做的是在另一个View Presenter中查看和创建窗口,并且可以在AcccountPresenter中使用eventBus春天vaadin或其他EventBus。我真的不明白这个角色。

谢谢

2 个答案:

答案 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