异步任务
明确概念:同步和异步的区别
同步:是阻塞模式异步是非阻塞模式
同步就是指程序在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去。
异步就是程序调用一个耗时较长的功能(方法)时,它并不会阻塞程序的执行流程,程序会继续往下执行。当功能执行完毕时,程序能够获得执行完毕的消息或能够访问到执行的结果(如果有返回值或需要返回值时)。
同步过程
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("数据正在处理中");
}
异步任务
我们只需要告诉调用者这是一个异步方法那么系统便会自动的帮我们执行异步操作
- 在方法上通过注解告诉spring这是一个异步方法
- 在启动类上开启支持异步注解功能
邮件任务
找到QQ邮箱找到设置中的账户然后将服务开启
引入支持邮件发送的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
我们先来看一下邮箱发送的源码然后根据源码内容将配置信息重新编写在配置文件中
配置文件内容
让我们简单的测试发送一封邮件
@Autowired
private JavaMailSenderImpl mailSender;
@Test
void contextLoads() {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setSubject("测试邮件发送");
mailMessage.setText("邮件正文");
mailMessage.setTo("3212746324@qq.com");
mailMessage.setFrom("3212746324@qq.com");
mailSender.send(mailMessage);
}
复杂博客怎么去书写
//上传一个复杂的邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
//组装
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("第二篇测试");
helper.setText("<p style='color:red'>测试内容</p>",true);
//上传一个附件
helper.addAttachment("1.jpg", new File("C:\\Users\\郭家森\\Desktop\\Inner\\测试图片.jpg"));
helper.setTo("3212746324@qq.com");
helper.setFrom("3212746324@qq.com");
mailSender.send(mimeMessage);
定时执行任务
说白了定时任务就是让程序在指定的时间或者在规定的时间点上执行相应的代码
两部操作
- 在启动类上开启支持定时任务的注解
- 在方法上加上定时任务的注解并指定相应的cron表达式
@EnableScheduling
/**
* 1:cron表达式
* 2:秒 分 时 日 月 周几
* 每两秒执行一次
*/
@Scheduled(cron = "0/2 * * * * ?")
public void hello(){
System.out.println("执行定时认为");
}