0

我有一个带有 Vaadin 的 Spring Boot 项目,我想集成 Vaadin4Spring EventBus 框架:

https://github.com/peholmst/vaadin4spring/tree/master/spring-vaadin-eventbus

作者说:

请注意,事件总线 API 在版本 0.0.5 中发生了更改

但是,如果我在 pom.xml 中添加 Maven 依赖项:

    ...
    <dependency>
        <groupId>org.vaadin.spring</groupId>
        <artifactId>spring-vaadin-eventbus</artifactId>
        <version>LATEST</version>
    </dependency>
    ...

Maven 下载0.0.4.RELEASE版本。我试图明确设置以下版本:

    ...
    <dependency>
        <groupId>org.vaadin.spring</groupId>
        <artifactId>spring-vaadin-eventbus</artifactId>
        <version>0.0.5</version>
    </dependency>
    ...

    ...
    <dependency>
        <groupId>org.vaadin.spring</groupId>
        <artifactId>spring-vaadin-eventbus</artifactId>
        <version>0.0.5.RELEASE</version>
    </dependency>
    ...

    ...
    <dependency>
        <groupId>org.vaadin.spring</groupId>
        <artifactId>spring-vaadin-eventbus</artifactId>
        <version>0.0.5-SNAPSHOT</version>
    </dependency>
    ...

我还尝试将整个Spring4Vaadin插件设置为依赖项:

<dependency>
  <groupId>org.vaadin.spring</groupId>
  <artifactId>spring-boot-vaadin</artifactId>
  <version>LATEST</version>
</dependency>
...


<dependency>
  <groupId>org.vaadin.spring</groupId>
  <artifactId>spring-boot-vaadin</artifactId>
  <version>0.0.5</version>
</dependency>
...

<dependency>
  <groupId>org.vaadin.spring</groupId>
  <artifactId>spring-boot-vaadin</artifactId>
  <version>0.0.5-SNAPSHOT</version>
</dependency>    
...

<dependency>
  <groupId>org.vaadin.spring</groupId>
  <artifactId>spring-boot-vaadin</artifactId>
  <version>0.0.5.RELEASE</version>
</dependency>

但他们都没有工作。

基本上,我不能这样做:

 @Autowired
 EventBus.ApplicationEventBUs appEventBus;

 @Autowired
 EventBus.UIEventBus UIEventBus;
 ...

因为,正如 GitHub 上的 README.md 中所说:

请注意,事件总线 API 在版本 0.0.5 中发生了更改。从现在开始,您必须使用特定的接口声明要注入的事件总线(以前,一切都是 EventBus,您使用注释来指定要获取的总线)。这种变化的原因是

所以在版本0.0.4.RELEASE(Maven 认为是最新的)中,内部接口ApplicationEventBusUIEventBus没有定义。

那么,我怎样才能使用真正最新版本的插件呢?

4

1 回答 1

0

将我在 vaadin 论坛中的答案也放在这里:

Vaadin 插件有一个很好的事件总线实现。检查https://github.com/peholmst/vaadin4spring/tree/master/samples/eventbus-sample

我已经使用启用了弹簧(不是弹簧启动)的 Vaadin 应用程序完成了这项工作,但我猜它可能在没有 Spring 的情况下也可以工作,简短的步骤:1. 添加以下依赖项

<dependency>
    <groupId>org.vaadin.spring.addons</groupId>
    <artifactId>vaadin-spring-addon-eventbus</artifactId>
    <version>0.0.7.RELEASE</version>
</dependency>
  1. 将 EventBusConfiguration.class 导入您的 Spring 配置(如果 Spring Boot 与 @EnableAutoConfiguration 一起使用,则可能不需要)

  2. 连接到适当的事件总线(检查可用的不同类型的文档),这里我使用的是一个适用于每个 UI 实例的事件总线:

    
    @Autowired
    private EventBus.UIEventBus uiEventBus;
    

  3. 根据需要发布事件,例如:

    
    uiEventBus.publish(this, new RefreshMainViewEvent(this, "Usage details updated"));
     

  4. 订阅其他组件类中的事件

    
    @PostConstruct
    public void afterPropertiesSet() {
    uiEventBus.subscribe(this, false); }

  5. 添加要对事件执行的操作(在同一类中):

    
    @EventBusListenerMethod
    public void closeSymmUsageWindow(RefreshMainViewEvent event) {
        logger.debug("Received {}", event);
        //blah
    }
    

于 2016-12-29T11:47:49.723 回答