一.异步任务
重点就是两个注解,首先在配置中开启@EnableAsync
,然后在你需要进行异步执行的方法上添加@Async
即可。
二.定时任务
定时任务和异步任务一样,也是两个注解,不过相对于异步任务要复杂不少。首先是在配合中开启@EnableScheduling
,然后在你需要执行的定时任务上添加 @Scheduled
。其中@Scheduled
中需要设置cron参数来确定定时任务执行的模式。主要的格式就是(minute, hour, day of month, month, day of week) 以下是cron表达式中可以用的表达式。
字段 | 允许值 | 允许的特殊字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
小时 | 0-23 | , - * / |
日期 | 1-31 | , - * ? / L W C |
月份 | 1-12 | , - * / |
星期 | 0-7或SUN-SAT 0,7是SUN | , - * ? / L C # |
年 | 1970-2099 | , - * / |
特殊字符 | 代表含义 |
---|---|
, | 枚举 |
- | 区间 |
* | 任意 |
/ | 步长 |
? | 日/星期冲突匹配 ,发生冲突时,表示丢弃当前匹配 |
L | 最后 |
W | 工作日 |
C | 和calendar联系后计算过的值 |
# | 星期,4#2,第2个星期四 |
例子如下:
"0 0 10,14,16 * * ?" 每天上午10点,下午2点,4点
"0 0/30 9-17 * * "? 朝九晚五工作时间内每半小时
"0 0 12 ? * WED" 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
三.邮件任务
1.首先我们先引入Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.配置文件
spring:
mail:
#不是邮箱密码,是授权密码
password: adjakldh
#你的邮箱地址
username: 123@qq.com
#smtp地址
host: smtp.qq.com
#开启ssl
properties:
mail:
smtp:
ssl:
enable: true
3.发送邮件
- 发送简单邮件
public class TaskApplicationTests {
@Autowired
JavaMailSenderImpl javaMailSender;
@Test
public void setEmail() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setText("测试邮件内容");
simpleMailMessage.setSubject("测试邮件标题");
simpleMailMessage.setFrom("发件人@qq.com");
simpleMailMessage.setTo("收件人一@qq.com","收件人二@qq.com");
javaMailSender.send(simpleMailMessage);
}
- 发送复杂邮件
@Test
public void setComplicatedEmail() throws MessagingException {
MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
//设置可以上传文件
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);
//设置邮件内容为HTML格式
mimeMessageHelper.setText("<b style='color=red' 复杂邮件内容>",true);
mimeMessageHelper.setSubject("复杂邮件标题");
mimeMessageHelper.setFrom("发件人@qq.com");
mimeMessageHelper.setTo(new String[]{"收件人一@qq.com","收件人二@qq.com"});
//设置上传文件
mimeMessageHelper.addAttachment("a1.jpg",new File("C:\\Users\\Administrator\\Desktop\\1.png"));
mimeMessageHelper.addAttachment("123.docx",new File("C:\\Users\\Administrator\\Desktop\\CDN调度系统需求.docx"));
javaMailSender.send(mimeMailMessage);
}
好的,今天就到这里,似乎没有留下什么没解决的坑。
网友评论