任务之异步,邮件,定时
任务
异步任务
举例:发送邮件时,点击发送,马上显示发送成功,而实际邮件之后才能收到
理解:就是比如用户发送一个短信,正常情况下,点击发送短信,短信发送这个过程需要10s时间,然后用户等待10s,再显示结果,发送成功。
然而为了提高用户体验,执行异步任务,让发送这个过程与返回结果不是同步执行,当用户点击发送,立刻显示发送成功,然而实际上再慢慢发送短信。
实现这个操作只需要,给需要异步的方法添加@Async注解。并且在主方法上开启异步即可
@ResponseBody
@RequestMapping("/send")
public String asy() {
as.asy(); //调用的这个方法是异步方法
return "ok"; //那么发送send请求时,会先返回这个ok结果,再去执行asy()方法
}
}
@Async//表名这个方法为异步方法
public void asy() {
@EnableAsync//主启动类上开启异步
@SpringBootApplication
public class SpringbootAsyncApplication {
邮件发送
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置
spring.mail.username=190。。。。。@qq.com
#密码是从qq邮箱获取的加密密码
spring.mail.password=xdjeqmipihktcidj
spring.mail.host=smtp.qq.com
#开启加密验证
spring.mail.properties.mail.smtp.ssl.enable=true
简单的发送邮件使用
@Autowired
JavaMailSenderImpl mailSender;//需导入此类
@Test
void contextLoads() {//测试邮件
SimpleMailMessage message = new SimpleMailMessage();//邮件对象
message.setSubject("");//邮件主题
message.setText("");//邮件内容
message.setTo(new String[]{"1904532518@qq.com","1256318195@qq.com"});//邮件接收者
message.setFrom("1904532518@qq.com");//邮件发送者
mailSender.send(message);//发送邮件
}
//这个目前不知道什么原因,别人收不到
复杂的发送邮件使用
@Autowired
JavaMailSenderImpl mailSender;
MimeMessage mailMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = null;//true表示支持复杂类型
try {
helper = new MimeMessageHelper(mailMessage, true);
helper.setFrom("1904532518@qq.com");
helper.setTo("1256318195@qq.com");
helper.setSubject("主题");
helper.setText("");
//附件
helper.addAttachment("1.gif", new File("C:\\Users\\think\\Desktop\\1.gif"));
} catch (MessagingException e) {
e.printStackTrace();
}
mailSender.send(mailMessage);//发送邮件
定时任务
主要目的就是让一个方法在指定的时间执行
1,开启定时功能 ,在启动类加注解@EnableScheduling
2,@Scheduled(cron="")//cron表达式设置时间
public void hello() {
System.out.println("哈,我被执行了");
}
给方法上标注解,cron表达式去百度即可

浙公网安备 33010602011771号