springboot异步任务,发送邮件,定时任务

异步方法

就是有些程序需要执行的时间比较久,不能让程序执行完它再继续执行,所以需要创建另外的线程来执行它。springboot中使用@Async注解在需要异步执行的方法上即可实现,同时需要在springboot启动类上加上@EnableAsync注解开启这个注解功能。

定时任务

可以在自己设定的时间点上执需要执行的程序,springboot中也有集成,在对应方法上使用@Scheduled(cron=“设置时间点”)注解即可实现定时调用,同样需要在主启动类开启这个注解功能@EnableScheduling

发送邮件

需要导入依赖:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>

普通文本邮件格式:

void contextLoads() {
        SimpleMailMessage mailMessage=new SimpleMailMessage();
        mailMessage.setSubject("simpleMailMessage");
        mailMessage.setText("这是使用springboot的simpleMailMessage发的邮件");
        mailMessage.setTo("2332762864@qq.com");
        mailMessage.setFrom("2332762864@qq.com");
        javaMailSender.send(mailMessage);
    }

可带附件的邮件:

void sendMimeMessage() throws MessagingException {
    MimeMessage mimeMessage=javaMailSender.createMimeMessage();
    //第二个参数用于设置是否可以带附件
    MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
    helper.setSubject("mimeMessage");
    helper.setText("这是使用mimeMessage发送的第一个邮件,这给类型的邮件可以包含附件");
    helper.addAttachment("LICENSE.txt",new File("D:\\Git\\LICENSE.txt"));
    helper.addAttachment("LICENSE2.txt",new File("D:\\Git\\LICENSE.txt"));
    helper.setTo("2332762864@qq.com");
    helper.setFrom("2332762864@qq.com");
    javaMailSender.send(mimeMessage);
}

异步邮件或者定时邮件:

异步邮件:

@Service
public class TestSechdu {
    @Autowired
    JavaMailSender javaMailSender;
    @Async
    public void  sendMail() throws InterruptedException {
        SimpleMailMessage mailMessage=new SimpleMailMessage();
        mailMessage.setSubject("simpleMailMessage");
        mailMessage.setText("这是使用springboot的simpleMailMessage发的邮件");
        mailMessage.setTo("2332762864@qq.com");
        mailMessage.setFrom("2332762864@qq.com");
        javaMailSender.send(mailMessage);
        System.out.println("邮件已发送成功!");
    }
}

写一个controller来调用,非异步的情况下会转圈圈几秒钟等待邮件发送完毕才显示页面,而异步情况可以直接显示页面,然后后台另一个线程在执行发送邮件的功能。

@RestController
public class mailController {
    @Autowired
    TestSechdu testSechdu;
    @RequestMapping("/hello")
    public String sendSyncMail() throws InterruptedException {
        testSechdu.sendMail();
        return "邮件正在发送...";
    }
}

在这里插入图片描述

定时邮件

@Service
public class TestSechdu {
    @Autowired
    JavaMailSender javaMailSender;
    // 秒,分,时 日 月 周
    @Scheduled(cron="0 0/1 19 ? 6 0-7")
    public void  sendMail() throws InterruptedException {
        SimpleMailMessage mailMessage=new SimpleMailMessage();
        mailMessage.setSubject("simpleMailMessage");
        mailMessage.setText("这是使用springboot的simpleMailMessage发的邮件");
        mailMessage.setTo("2332762864@qq.com");
        mailMessage.setFrom("2332762864@qq.com");
        javaMailSender.send(mailMessage);
        System.out.println("邮件已发送成功!");
    }
}

这个方法甚至不用你去调用,到时间了会自动执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值