1.生活中的定时任务
- 定时推送,签到
- QQ定时发说说邮件
- 蚂蚁森林定时产生能量。微信公众号不步数的更新
- 手机定时开关机
- 等等..........
2.实现定时任务的几种方式
1.使用Timer
2.使用ScheduledExecutorService
3.使用Spring Task
4.整合Quartz
3.课堂实例
> 使用Spring Task方法使用邮件来完成定时发送
-
首先配置QQ邮箱->设置->账户->开启服务POP3/SMTP开启->获取授权码
- 添加pom依赖
dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 配置application.properties
spring.mail.host=smtp.qq.com
spring.mail.username=1459816730@qq.com
spring.mail.password=gflxxutdklwogbba
spring.mail.default-encoding=UTF-8
##如果不加下面3句,会报530错误
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
- 写Service接口
/**
* 发送简单邮件
*/
void sendMail(String to,String subject,String content);
}
- 实现接口
@Service("mailService")
public class MailServiceImpl implements MailService {
@Autowired
private JavaMailSender mailSender;
@Override
public void sendMail(String to, String subject, String content) {
SimpleMailMessage mailMessage=new SimpleMailMessage();
mailMessage.setFrom("1062273622@qq.com");//发起者
mailMessage.setTo(to);//接受者
mailMessage.setSubject(subject);
mailMessage.setText(content);
try {
mailSender.send(mailMessage);
System.out.println("发送简单邮件");
}catch (Exception e){
System.out.println("发送简单邮件失败");
}
}
}
- 写定时任务:每天9点发送一份电子邮件
@Service
//@Async
public class TaskService {
@Autowired
private MailService mailService;
@Scheduled(cron = "0 0 9 ? * *")
public void proces(){
mailService.sendMail("815835155@qq.com","简单邮件","lalalalalalalaal");
System.out.println("111");
}
}
注:关于时间的设置用的是cron表达式
cron表达式