Как запланировать выполнение задачи каждые 'N' секунд в среде Spring - PullRequest
4 голосов
/ 12 декабря 2011

Как мне подключить мой web.xml, чтобы задача выполнялась каждые n секунд.Более того, мне нужно, чтобы серверный метод обновлялся каждые 5 секунд с помощью вызова метода.

Большое спасибо заранее

РЕШЕНО:

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

Ответы [ 5 ]

16 голосов
/ 12 декабря 2011

Вы можете аннотировать нужную подпрограмму, используя

public class Foo {

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

Но для того, чтобы Spring мог найти и распознать аннотацию, вы должны объявить, в каком базовом пакете находится класс Foo, а также настроить Spring дляищите планирование задач.Добавьте в свою весеннюю конфигурацию XML следующее (и не забудьте импортировать пространства имен XML context и task).

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

В качестве альтернативы вы можете поместить @EnableScheduling перед объявлением класса, и он выполнит конфигурацию XML для вас из коробки.

См. Также контекст пространство имен и задача пространство имен .

3 голосов
/ 12 декабря 2011

Вы можете использовать интеграцию планировщика Quartz, как описано здесь: http://static.springsource.org/spring/docs/2.0.8/reference/scheduling.html

Я не понимаю 2-ю часть вашего вопроса об обновлении метода сервера.

2 голосов
/ 12 декабря 2011

Посмотрите руководство Spring, раздел 25, Выполнение и планирование задач .Когда я делал подобные вещи, я использовал аннотации, описанные в разделе 25.5 .Короче говоря, в bean-объекте, управляемом Spring, вы аннотируете метод, который вы хотите запустить с @Scheduled, и добавляете пару строк в ваш applicationContext.xml.

2 голосов
/ 12 декабря 2011

Как использовать кварц с пружиной. Это легко настраивается путем разделения заданий, триггеров и таймеров. Вы также можете использовать выражения cron и интегрировать такие вещи, как JMX:

Весна и кварц

0 голосов
/ 20 октября 2017

Это выражение будет выполняться каждые 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();
        }
    }
...