ApplicationListener不能用参数参数化?

时间:2012-04-25 17:49:15

标签: spring spring-batch

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

中的说明here进行了操作

这是我创建的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&lt; DataReaderEvent&gt;

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

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

1 个答案:

答案 0 :(得分:2)

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

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