• SpringBoot异步任务、邮件任务、定时任务


    SpringBoot异步任务、邮件任务、定时任务

    异步任务

    springboot启动类上增加@EnableAsync // 开启异步注解功能

    在要调用的异步方法上增加@Async注解

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zw1TyTNB-1662639933309)(/Users/cat/Library/Application Support/typora-user-images/image-20220908191920110.png)]

    直接调用即可,完成异步处理任务

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5LEUudf0-1662639933309)(/Users/cat/Library/Application Support/typora-user-images/image-20220908192132484.png)]

    邮件任务

    引入依赖

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4

    QQ邮箱为例,qq邮箱为了保护密码隐私需要开启POP3/SMTP服务,获取授权码,其他的可能不用

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EjQcvuCJ-1662639933310)(/Users/cat/Library/Application Support/typora-user-images/image-20220908193039493.png)]

    配置

    spring:
      mail:
        username: xxx@qq.com
        password: 授权码
        host: smtp.qq.com
        properties:
          mail:
            smtp:
              ssl:
                enable: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    测试

    @Autowired
    private JavaMailSenderImpl mailSender;
    
    /**
     * 邮件任务测试
     */
    @Test
    void sendMailTest() {
      //一个简单邮件
      SimpleMailMessage message = new SimpleMailMessage();
      message.setSubject("邮件主题");
      message.setText("内容~谢谢");
      message.setTo("hexuan.cat@gmail.com");
      message.setFrom("2272062968@qq.com");
      mailSender.send(message);
    }
    
    /**
     * 复杂邮件
     */
    @Test
    void sendMailComplexTest() throws MessagingException {
      //一个复杂邮件
      MimeMessage mimeMessage = mailSender.createMimeMessage();
      //组装
      MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
      helper.setSubject("主题");
      helper.setText("

    hello world

    "
    , true); //附件 helper.addAttachment("1.jpg", new File("/Users/cat/Documents/1.png")); helper.addAttachment("2.jpg", new File("/Users/cat/Documents/1.png")); helper.setTo("hexuan.cat@gmail.com"); helper.setFrom("2272062968@qq.com"); mailSender.send(mimeMessage); }
    • 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
    • 34
    • 35
    • 36

    运行测试用例,即可收到发送的邮件啦
    请添加图片描述

    定时任务

    在SpringBoot启动类上增加@EnableScheduling // 开启定时任务注解

    Service定时任务,使用cron表达式实现

    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Service;
    
    @Service
    public class ScheduledService {
        //cros表达式 秒 分 时 日 月 周几
        @Scheduled(cron = "*/5 * * * * ?")  //每5秒执行一次
        public void hello() {
            System.out.println("hello,执行成功");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    SAP 教程之 SAP 中的 IDOC
    JVM篇---第十一篇
    Java EE基础练习题(上)
    req.url携带favicon.ico
    Integer对象的大小比较
    Instant,LocalDate,LocalDateTime,Date,String之间转换
    java八股文面试[数据库]——MySQL的体系架构
    http响应状态码(Header常见属性 — Location属性)
    分割回文串
    【java学习】特殊流程控制语句(8)
  • 原文地址:https://blog.csdn.net/a2272062968/article/details/126771560