SpringBoot - 任务

一.异步任务

重点就是两个注解,首先在配置中开启@EnableAsync,然后在你需要进行异步执行的方法上添加@Async即可。

  • 本文代码GitHub

二.定时任务

定时任务和异步任务一样,也是两个注解,不过相对于异步任务要复杂不少。首先是在配合中开启@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

  
            org.springframework.boot
            spring-boot-starter-mail
        

2.配置文件

spring:
  mail:
    #不是邮箱密码,是授权密码
    password: adjakldh
    #你的邮箱地址
    username: [email protected]
    #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("",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);
    }

好的,今天就到这里,似乎没有留下什么没解决的坑。

你可能感兴趣的:(SpringBoot - 任务)