如何在Spring框架中每隔“N”秒安排任务

时间:2011-12-12 18:59:22

标签: java spring scheduled-tasks scheduler

如何连接我的web.xml以每隔n秒发生一次任务。此外,我需要通过方法调用每5秒刷新一次服务器方法。

非常感谢提前

解决:

http://javaprogrammingtips4u.blogspot.com/2010/05/how-to-implement-task-scheduler-job.html

5 个答案:

答案 0 :(得分:15)

您可以使用

注释所需的例程
public class Foo {

    @Scheduled(fixedDelay=5000)
    public void Bar() {
       // ...
    }
}

但是为了让Spring找到并识别注释,你必须声明类Foo所在的基础包,以及配置Spring来查找调度任务。将以下内容放在spring XML配置中(不要忘记导入XML命名空间contexttask)。

<context:component-scan base-package="com.company.scheduling"/>
<task:annotation-driven />

或者,您可以在类声明之前放置@EnableScheduling,它会为您提供开箱即用的XML配置。

另请参阅the context namespacethe task namespace

答案 1 :(得分:3)

您可以使用Quartz调度程序集成,如下所示: http://static.springsource.org/spring/docs/2.0.8/reference/scheduling.html

我不理解有关刷新服务器方法的第二部分问题。

答案 2 :(得分:2)

如何使用石英弹簧。这可以通过拆分作业,触发器和计时器来高度配置。您还可以使用cron表达式并集成JMX:

等内容

Spring and Quartz

答案 3 :(得分:2)

查看Spring手册第25节Task Execution and Scheduling。当我完成这种事情时,我使用了注释,在section 25.5中描述。简而言之,在Spring管理的bean中,您使用@Scheduled注释要运行的方法,并在applicationContext.xml中添加几行。

答案 4 :(得分:0)

此表达式将在工作日内每5秒运行一次:

@Scheduled(cron = "*/5 * * * * MON-FRI")
    public void updateAllStatements() {
...........
}

使用此方法检查cron表达式:

/**
     * Checks provided Cron expression
     *
     * @param cronExpression
     */
    public static void checkCronExpression(final String cronExpression) {
        try {
            Date now = new Date();

            System.out.println(now);

            final CronSequenceGenerator gen = new CronSequenceGenerator(cronExpression);

            for (int i = 0; i < 5; i++) {
                now = gen.next(now);

                System.out.println(now);
            }
        } catch (final Exception e) {
            e.printStackTrace();
        }
    }