2015-10-01 7 views
2

Я пытаюсь выполнить метод каждый день, для которого я добавил планировщик с использованием Spring, но не выполнил его.Cron запускается в 12:00 AM каждый день с помощью Spring Scheduler

<task:scheduled-tasks scheduler="myScheduler"> 
    <task:scheduled ref="logDeletionTask" method="deleteExpiredLogs" cron="0 0 0 * * ?" /> 
</task:scheduled-tasks> 
<task:scheduler pool-size="25" id="myScheduler"/> 
+0

Возможно, у вас был код на машине или сервере с другим часовым поясом –

ответ

1

Для меня выражение хрон вы ищете: 0 0 12 * * ?

Вот рабочий пример для вас:

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:task="http://www.springframework.org/schema/task" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"> 

    <bean id="logDeletionTask" class="task.Task" /> 

    <task:scheduled-tasks scheduler="myScheduler"> 
     <task:scheduled ref="logDeletionTask" method="deleteExpiredLogs" cron="0 0 12 * * ?" /> 
    </task:scheduled-tasks> 

    <task:scheduler pool-size="25" id="myScheduler"/> 
</beans> 

Задача боб:

package task; 

import java.util.Date; 

import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class Task { 

    public static void main(String[] args) throws InterruptedException { 
     ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); 
     while (true) { 
      Thread.sleep(1000); 
     } 
    } 

    public void deleteExpiredLogs() { 
     System.out.println(new Date()); 
    } 
} 
+0

Я думаю, что это выражение запланирует работу в 12 вечера. –

+1

Третья часть выражения - это час, который должен быть от 0 до 23 (0 составляет 12 часов). Если вы хотите, чтобы задание срабатывало при 12PM, правильное выражение: '0 0 0 * *?', Если вы хотите, чтобы оно было запущено в 12AM, оно '0 0 12 * *?' –

+1

В вашем ответе что-то не так, если 0 соответствуют 12 часам вечера, так что 1 соответствует 1pm и 13 соответствует 1am, и это не может быть принято никому –