以编程方式创建Spring Framework任务?

7

我需要在我的应用程序中动态创建任务。我该怎么做?我可以使用 @autowired 注解获取调度程序,但是调度程序需要 Runnable 对象。我需要提供 Spring 对象,以便我的任务也可以使用 @autowired 注解。

@Autowired private TaskScheduler taskScheduler;
1个回答

16

你只需要将目标对象包装在一个 Runnable 中,并提交它:

private Target target;  // this is a Spring bean of some kind
@Autowired private TaskScheduler taskScheduler;

public void scheduleSomething() {
    Runnable task = new Runnable() {
       public void run() {
          target.doTheWork();
       }
    };
    taskScheduler.scheduleWithFixedDelay(task, delay);
}

我无法在该上下文中访问目标。Eclipse显示语法错误。 - newbie
1
@newbie:是的,我只是给你提供了一个大致的想法,而不是可工作的代码。 - skaffman
问题已解决,我将Runnable接口添加到我的任务类(即目标)中。 - newbie
2
@skaffman 由于某些原因,taskScheduler未被注入。您是否知道当在配置类上设置EnableScheduling时是否会创建TaskScheduler?谢谢! - manash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接