SpringBoot - 任务

作者: BzCoder | 来源:发表于2018-06-07 14:32 被阅读3次

    一.异步任务

    重点就是两个注解,首先在配置中开启@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);
        }
    

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

    相关文章

      网友评论

        本文标题:SpringBoot - 任务

        本文链接:https://www.haomeiwen.com/subject/cjlwsftx.html