定时任务
注解式
- SpringBoot
启动类增加@EnableScheduling
注解
@Scheduled(cron = "0/1 * * * * ?")
public void timerHandler(){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date));
}
- Spring常规定制
<?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:task="http://www.springframework.org/schema/task"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">
<context:component-scan base-package="com.pes_soft.task.demo" />
<!-- Spring注解方式配置调度任务 -->
<task:executor id="executor" pool-size="3"/>
<task:scheduler id="scheduler" pool-size="3"/>
<task:annotation-driven executor="executor" scheduler="scheduler"/>
</beans>
注意:配置Spring定时任务时,需要在Spring配置文件的xml头部加入xmlns:task="http://www.springframework.org/schema/task"
和xsi:schemaLocation位置中加入http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
动态修改定时规则
- SpringBoot
启动类增加@EnableScheduling
注解
@Component
public class TimerTest implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
//配置多线程
// ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
// taskScheduler.setPoolSize(10);
// taskScheduler.initialize();
// scheduledTaskRegistrar.setTaskScheduler(taskScheduler);
scheduledTaskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(date);
System.err.println(format);
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
//可从表中设置
String cron = "0/1 * * ? * *";
CronTrigger cronTrigger = new CronTrigger(cron);
Date date = cronTrigger.nextExecutionTime(triggerContext);
return date;
}
});
}
- Spring普通配置
同上配置文件
但在实现SchedulingConfigurer类上加上@EnableScheduling
可借鉴: https://blog.csdn.net/jianggujin/article/details/77937316