详解Springboot中的异步、定时、邮件任务

目录

  • 一、异步任务
    • 1、编写一个类AsyncService
    • 2、编写一个AsyncController类
    • 3、开启异步
  • 二、邮件任务
    • 1、引入依赖
    • 2、配置mail
    • 3、测试
  • 三、定时任务
    • 1、编写一个ScheduledService类
    • 2、添加注解

一、异步任务
1、编写一个类AsyncService

异步处理还是非常常用的,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会成功,所以我们一般会采用多线程的方式去处理这些任务。
package com.rk.service; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @Servicepublic class AsyncService {public void hello(){try {System.out.println("数据处理中~"); Thread.sleep(3000); //停止三秒} catch (InterruptedException e) {e.printStackTrace(); }}}

【详解Springboot中的异步、定时、邮件任务】
2、编写一个AsyncController类
package com.rk.controller; import com.rk.service.AsyncService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestControllerpublic class AsyncController {@AutowiredAsyncService asyncService; @GetMapping("/hello")public String hello(){asyncService.hello(); return "success"; }}

现在启动项目进行测试,三秒后才会出现success,现在还不是异步

3、开启异步
@Async//告诉spring这是一个异步方法public void hello(){try {System.out.println("数据处理中~"); Thread.sleep(3000); //停止三秒} catch (InterruptedException e) {e.printStackTrace(); }}


@EnableAsync//开启异步注解功能@SpringBootApplicationpublic class Springboot09TestApplication {public static void main(String[] args) {SpringApplication.run(Springboot09TestApplication.class, args); }}


二、邮件任务
1、引入依赖
org.springframework.bootspring-boot-starter-mail


2、配置mail
#用户名spring.mail.username=1624603357@qq.com#密码spring.mail.password=yblyxhvmnsurbbci#发送邮件服务器spring.mail.host=smtp.qq.com#开启加密验证 sslspring.mail.properties.mail.smtp.ssl.enable=true


3、测试
简单邮件
@AutowiredJavaMailSenderImpl mailSender; @Testvoid contextLoads() {SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setSubject("你好,rk"); //邮件标题mailMessage.setText("测试邮件"); //邮件内柔mailMessage.setTo("r1624603357@126.com"); //收件人邮箱mailMessage.setFrom("1624603357@qq.com"); //发件人邮箱mailSender.send(mailMessage); }


复杂邮件
@Testvoid contextLoads2() throws MessagingException {//一个复杂的邮件MimeMessage mimeMessage = mailSender.createMimeMessage(); //组装MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); //正文helper.setSubject("你好,rk"); helper.setText("测试邮件",true); //附件helper.addAttachment("1.png",new File("D:\\QLDownloadGame\\2\\1.png")); helper.addAttachment("rk.docx",new File("E:\\桌面\\rk.docx")); // 发/收件人helper.setTo("r1624603357@126.com"); helper.setFrom("1624603357@qq.com"); //发送mailSender.send(mimeMessage); }



三、定时任务
1、编写一个ScheduledService类
@Servicepublic class ScheduledService {//秒 分 时 日 月 周几//0 * * * * MON-FRI//注意cron表达式的用法;每天20:28 0秒执行该方法@Scheduled(cron = "0 28 20 * * 0-7")public void hello(){System.out.println("现在是20:28"); System.out.println("hello....."); }}

项目启动后每天20:28:00执行hello方法

2、添加注解
@EnableAsync//开启异步注解功能@EnableScheduling//开启定时功能注解@SpringBootApplicationpublic class Springboot09TestApplication {public static void main(String[] args) {SpringApplication.run(Springboot09TestApplication.class, args); }}

cron表达式练习
/*
【0 0/5 14,18 * * ?】每天14点整和18点整,每隔5分钟执行一次
【0 15 10 ? * 1-6】每个月的周一-周六10:15分执行一次
【0 0 2 ? * 6L】每个月的最后一个周六凌晨2点执行一次
【0 0 2 LW * ?】每个月的最后一个工作日凌晨2点执行一次
【0 0 2-4 ? * 1#1】每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次
*/
到此这篇关于Springboot的异步、定时、邮件任务的文章就介绍到这了,更多相关Springboot异步定时邮件任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读