SpringBoot 笔记(八):任务

SpringBoot 笔记 (八):任务

1.异步任务

1.开启异步任务注解

@EnableAsync

2.对Service层方法开启异步

@Async

1
2
3
4
5
6
7
8
9
@Service
public class TaskService {
@Async
public void task() throws InterruptedException {
System.out.println("start");
Thread.sleep(3000);
System.out.println("end");
}
}
1
2
3
4
5
6
7
8
@EnableAsync
@SpringBootApplication
public class TaskApplication {

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

2.定时任务

1.开启调度

@EnableScheduling

2.@Scheduled(cron = “”)

调度注解,放在Service层即可。

3.cron格式

秒(0-59) 分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-7 其中0/7表示周日)

这几个位置可写的值不仅仅是上面的数字,还可以是表达式:

  • 枚举:1,2,3,4
  • 范围:2-5
  • 任意: *
  • 步长: /3 每3步
  • 冲突:? 当日和星期回冲突的时候

一些例子:

1 * * *? * 2-7 每周的周二到周天的每一分钟的第一秒触发

1-7 * * ? * 3 每周三的每分钟的1-7秒触发

0 0/5 14,18 ? * 1-6 每周的1-6 14点和18点 每个五分钟执行一次

0 15 10?* 1-6 每个月的周一至周六10:15分执行一次

0 0 2?* 6 每个月的最后一个周六凌晨2点执行一次

3.邮件发送

1.配置原理

配置pom文件

1
2
3
4
5
6
7
8
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
</dependency>

查看MailSenderAutoConfiguration的自动配置类

1
2
3
4
5
6
7
8
9
10
11
@Bean
public JavaMailSenderImpl mailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
if (this.session != null) {
sender.setSession(this.session);
}
else {
applyProperties(sender);
}
return sender;
}

可以看到主要就是注入了一个 JavaMailSenderImpl 这个类的实例,然后我们就可以借助这个实例进行发送邮件。

2.配置属性

1
2
3
4
5
6
7
spring:
mail:
host:
username:
password:
default-encoding: utf-8
protocol: smtp

3.发送邮件

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
@Autowired
JavaMailSenderImpl javaMailSender;

/**
* 简单的文本文件的发送
*/
@Test
public void senderSimple(){
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("开会");
message.setText("你好开会");
message.setFrom("lwenxu");
message.setTo("xpf199741@outlook.com");
javaMailSender.send(message);
}

@Test
public void senderMulti() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);

mimeMessageHelper.setSubject("开会");
mimeMessageHelper.setText("你好开会");
mimeMessageHelper.setFrom("lwenxu");
mimeMessageHelper.setTo("11@qq.com");
mimeMessageHelper.addAttachment("1.jpg", new File("C:\\asd.jpg"));

javaMailSender.send(mimeMessage);
}

Powered by Hexo and Hexo-theme-hiker

Copyright © 2015 - 2021 昨夜凛雨 All Rights Reserved.

UV : | PV :