1

所以我为我的 Spring 批处理程序设置了一个自定义的 ApplicationEvent 和 ApplicationListener。我按照第 3.13.2 节的说明进行操作

这是我创建的 ApplicationEvent

import org.springframework.context.ApplicationEvent;

public class DataReaderEvent extends ApplicationEvent {

  private final String progress;
  private final String text;

  public DataReaderEvent(Object source, String progress, String text) {
      super(source);
      this.progress = progress;
      this.text = text;
  }

  public String getProgress() {
      return progress;
  }

  public String getText() {
      return text;
  }

}

还有我的 ApplicationListener

import org.springframework.context.ApplicationListener;

public class DataReaderNotifier implements ApplicationListener<DataReaderEvent> {

  private String progress;
  private String text;


  @Override
  public void onApplicationEvent(DataReaderEvent event) {
      this.progress = event.getProgress();
      this.text = event.getText();
  }

  public String getProgress() {
      return progress;
  }

  public String getText() {
      return text;
  }
}  

我遇到的问题是 ApplicationListener 抱怨我试图做 ApplicationListener < DataReaderEvent >

它说,“ApplicationListener 类型不是通用的;它不能用参数 DataEventReader 参数化”

我不明白为什么会这样,因为我认为我非常密切地遵循了这个例子。如果有人有任何想法,他们将不胜感激。

4

1 回答 1

2

您确定您的项目中包含正确的 (3.0.x+) 版本的 Spring 吗?我认为 2.5.x ApplicationListener 不是通用的,所以如果你不小心使用了那个旧版本,那会导致你遇到的问题。

http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/context/ApplicationListener.html

于 2012-04-25T19:11:25.160 回答