0%

2020年6月8日-SpringBoot-任务

一、异步任务

在实际开发中为了让一段程序执行的时候,不阻塞其他线程,其他方法能够异步调用时就需要用到异步处理。

在SpringBoot中有专门的注解实现程序的异步处理:

  • @EnableAsync:开启异步任务
  • @Async :声明此方法为异步方法

Springboot04TaskApplication.java:

1
2
3
4
5
6
7
8
9
10
//开启异步注解
@EnableAsync
@SpringBootApplication
public class Springboot04TaskApplication {

public static void main(String[] args) {
SpringApplication.run(Springboot04TaskApplication.class, args);
}

}

service;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//异步任务
@Service
public class AsyncService {
// 告诉spring此方法为异步方法
@Async
public void hello() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("处理数据中");

}
}

controller:

1
2
3
4
5
6
7
8
9
10
@RestController
public class AsyncController {
@Autowired
AsyncService asyncService;
@GetMapping("hello")
public String hello() {
asyncService.hello();
return "success";
}
}

二、定时任务

项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候,分析一次前一天的日志信息,Spring为我们提供了异步执行任务任务调度的方式,提供TaskExecutorTaskScheduler接口。

两个注解:

  • @EnableScheduling:开启定时任务服务
  • @Scheduled:标注在需要定时的方法上

corn表达式:

corn表达式

三、邮件任务

1.引入邮件场景依赖
1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.application.properties:
1
2
3
4
spring.mail.username=2933909306@qq.com
spring.mail.password=nktpnkalwzsadffc
#连接qq服务器
spring.mail.host=smtp.qq.com
3.邮箱服务需要开启授权码

打开邮箱—>设置—>账户设置—>账户安全—>开启服务—>生成授权码

qq邮箱授权码

4.连接SMTP腾讯服务器
5.Test.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
@SpringBootTest
class Springboot04TaskApplicationTests {

@Autowired
JavaMailSenderImpl javaMailSender;
@Test
void contextLoads() {
//简单邮件
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setSubject("测试邮件1");
simpleMailMessage.setText("使用spring-boot-mail-start发送邮件");
simpleMailMessage.setTo("lyit.tony0824@gmail.com");
simpleMailMessage.setFrom("2933909306@qq.com");
javaMailSender.send(simpleMailMessage);
}

@Test
void test02()throws Exception {
//1.创建一个复杂消息类型
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//参数true代表开启商船文件
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
//邮箱设置
mimeMessageHelper.setSubject("测试邮件2");
mimeMessageHelper.setText("<b style='color:red'>使用spring-boot-mail-start发送复杂邮件</b>",true);
mimeMessageHelper.setTo("lyit.tony0824@gmail.com");
mimeMessageHelper.setFrom("2933909306@qq.com");
//上传文件
mimeMessageHelper.addAttachment("图片", new File("C:\\Users\\liyi\\Desktop\\ys文件传输目录.png"));
javaMailSender.send(mimeMessage);
}

}
谢谢老板