1,SpringBoot设置定时任务,如每隔5秒输出一段内容。(这是springboot自带的定时任务,不需要依赖,相比quartz简单易用)
编程式写法:
首先实现SchedulingConfigurer,然后重写configureTasks方法,
再设置:1,需要执行任务,2,设置时间(参考QuartZ cron表达式)。
还不明白?新建一个springboot项目,把这段代码复制执行一遍,就懂了。
@Configuration
@EnableScheduling
public class TestSchedule implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar task) {
task.addTriggerTask(
() -> {sendMail();},//需要执行的任务
triggerContext -> {return setSendMailTime(triggerContext);});// 设置时间
}
public void sendMail(){
System.out.println("执行发送邮件任务");
}
public Date setSendMailTime(TriggerContext triggerContext){
String cron ="*/5 * * * * ?";// 每隔5秒发送
return new CronTrigger(cron).nextExecutionTime(triggerContext);
}
}
声明式写法:
/**springboot自带定时任务,第二种方式,声明式
* Spring Schedule 提供三种形式的定时任务:
*/
@Component
@Configurable
@EnableScheduling
public class TestScheduled_2 {
// 1,固定间隔时间 @Scheduled(fixedRate = 时间间隔 )
@Scheduled(fixedRate = 1000 * 10)// 10s执行一次
public void reportCurrentTime(){
System.out.println ("方法一" + dateFormat ().format (new Date()));
}
// 2,固定等待时间 @Scheduled(fixedDelay = 时间间隔 )
@Scheduled(fixedDelay = 1000 * 2) // 2s执行一次
public void fixedDelayJob() throws InterruptedException {
System.out.println("方法二"+dateFormat ().format (new Date ()));
}
// 3,Corn表达式 @Scheduled(cron = Corn表达式)
//每秒执行一次
@Scheduled(cron = "*/1 * * * * * ")
public void reportCurrentByCron(){
System.out.println ("方法3" + dateFormat ().format (new Date ()));
}
private SimpleDateFormat dateFormat(){
return new SimpleDateFormat ("HH:mm:ss");
}
}
2,通过JavaMail发送邮件