目前需求要求每天下午四点半和五点各执行一次,一个定时任务如何配置
建议使用Quartz实现,可参考以下资料,如有不明白再描述
https://www.cnblogs.com/beppezhang/p/6293471.html
可以写2个task, 需要注意的是表达式的时的值的取值范围是0-23,
Spring Quartz cronExpression 不能支持该场景,最省事的方式就是建立两个Trigger,调用同一个JobTast。
<!-- 定义调用的对象及对象中的方法 -->
<bean id="defMyJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="myTask" />
<property name="targetMethod" value="execute" />
<property name="concurrent" value="false" /> <!-- 是否支持并发 -->
</bean>
<!-- 触发器:定义出发器执行的脚本的时间 -->
<bean id="triggerTestJob" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="defMyJob" />
<property name="cronExpression">
<value>0 30 16 * * ?</value>
</property>
</bean>
<!-- 触发器:定义出发器执行的脚本的时间 -->
<bean id="triggerTestJob1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="defMyJob" />
<property name="cronExpression">
<value>0 0 17 * * ?</value>
</property>
</bean>
<!-- 总管理类,启动触发器的配置, 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuartz" lazy-init='false' autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="triggerTestJob" />
<ref bean="triggerTestJob1" />
</list>
</property>
<property name="autoStartup" value="true" />
<property name="startupDelay" value="30"/>
</bean>
可以看看spring schedule
为什么不用crontab
应该使用到的定时任务框架都能支持cron表达式,cron表达式写好就行了