Нам нужно добавить начальное время для весеннего кварцевого планировщика. Предположим, что нижеприведенный bean-компонент называется CronTriggerFactoryBean. И нам нужно запустить планировщик через 5 дней после запуска сервера.
<bean id = "sampleBean"
class = "org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name = "jobDetail">
<bean class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name = "targetObject" ref = "beanManager"/>
<property name = "targetMethod" value = "beanMethod"/>
<property name = "concurrent" value = "false"/>
</bean>
</property>
<property name = "cronExpression" value = "0 0/30 * ? * SUN-FRI"/>
</bean>
И вышеупомянутая конфигурация планировщика не запускается при запуске сервера приложений. Он работает как
Предположим, сервер запускается в 12:03.
Планировщик вызывается на 12:30, 13:00, 13:30, 14:00 ... соответственно.
Но то, что мы хотим, - это запуск сервера в 12:03, что означает, что планировщик должен запускаться один раз во время запуска сервера и в следующий раз тоже 12:33, 13:03, 13:33, 14:03 ...
Будет ли это работать, когда мы устанавливаем начальное время для этого bean-компонента?
Вы должны использовать SimpleTriggerFactoryBean вместо CronTriggerFactoryBean и определить триггер следующим образом:
<bean id = "simpleTrigger" class = "org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name = "jobDetail" ref = "simpleJobDetail" />
<property name = "startDelay" value = "1000" />
<property name = "repeatInterval" value = "10000" />
</bean>
Это будет запускать задание каждые 10 секунд с начальной задержкой в 1 секунду с момента запуска сервера. Теперь отрегулируйте значения в соответствии с вашими требованиями.
Боюсь, это невозможно с помощью простого триггера.
Ага. Проблема будет в том, что мы не можем добавить дни в SimpleTriggerFactoryBean.
Спасибо за ваш ответ. И где я могу ограничить такие дни как ВС-ПТ