异步方法
就是有些程序需要执行的时间比较久,不能让程序执行完它再继续执行,所以需要创建另外的线程来执行它。springboot中使用@Async注解在需要异步执行的方法上即可实现,同时需要在springboot启动类上加上@EnableAsync注解开启这个注解功能。
定时任务
可以在自己设定的时间点上执需要执行的程序,springboot中也有集成,在对应方法上使用@Scheduled(cron=“设置时间点”)注解即可实现定时调用,同样需要在主启动类开启这个注解功能@EnableScheduling
发送邮件
需要导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
普通文本邮件格式:
void contextLoads() {
SimpleMailMessage mailMessage=new SimpleMailMessage();
mailMessage.setSubject("simpleMailMessage");
mailMessage.setText("这是使用springboot的simpleMailMessage发的邮件");
mailMessage.setTo("2332762864@qq.com");
mailMessage.setFrom("2332762864@qq.com");
javaMailSender.send(mailMessage);
}
可带附件的邮件:
void sendMimeMessage() throws MessagingException {
MimeMessage mimeMessage=javaMailSender.createMimeMessage();
//第二个参数用于设置是否可以带附件
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
helper.setSubject("mimeMessage");
helper.setText("这是使用mimeMessage发送的第一个邮件,这给类型的邮件可以包含附件");
helper.addAttachment("LICENSE.txt",new File("D:\\Git\\LICENSE.txt"));
helper.addAttachment("LICENSE2.txt",new File("D:\\Git\\LICENSE.txt"));
helper.setTo("2332762864@qq.com");
helper.setFrom("2332762864@qq.com");
javaMailSender.send(mimeMessage);
}
异步邮件或者定时邮件:
异步邮件:
@Service
public class TestSechdu {
@Autowired
JavaMailSender javaMailSender;
@Async
public void sendMail() throws InterruptedException {
SimpleMailMessage mailMessage=new SimpleMailMessage();
mailMessage.setSubject("simpleMailMessage");
mailMessage.setText("这是使用springboot的simpleMailMessage发的邮件");
mailMessage.setTo("2332762864@qq.com");
mailMessage.setFrom("2332762864@qq.com");
javaMailSender.send(mailMessage);
System.out.println("邮件已发送成功!");
}
}
写一个controller来调用,非异步的情况下会转圈圈几秒钟等待邮件发送完毕才显示页面,而异步情况可以直接显示页面,然后后台另一个线程在执行发送邮件的功能。
@RestController
public class mailController {
@Autowired
TestSechdu testSechdu;
@RequestMapping("/hello")
public String sendSyncMail() throws InterruptedException {
testSechdu.sendMail();
return "邮件正在发送...";
}
}
定时邮件
@Service
public class TestSechdu {
@Autowired
JavaMailSender javaMailSender;
// 秒,分,时 日 月 周
@Scheduled(cron="0 0/1 19 ? 6 0-7")
public void sendMail() throws InterruptedException {
SimpleMailMessage mailMessage=new SimpleMailMessage();
mailMessage.setSubject("simpleMailMessage");
mailMessage.setText("这是使用springboot的simpleMailMessage发的邮件");
mailMessage.setTo("2332762864@qq.com");
mailMessage.setFrom("2332762864@qq.com");
javaMailSender.send(mailMessage);
System.out.println("邮件已发送成功!");
}
}
这个方法甚至不用你去调用,到时间了会自动执行。