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

 更新时间:2021年11月02日 14:22:50   作者:Rk..  
这篇文章主要介绍了Springboot中的异步、定时、邮件任务,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一、异步任务

1、编写一个类AsyncService

异步处理还是非常常用的,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会成功,所以我们一般会采用多线程的方式去处理这些任务。

package com.rk.service;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@Service
public class AsyncService {
    public void hello(){
        try {
            System.out.println("数据处理中~");
            Thread.sleep(3000);//停止三秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

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;
@RestController
public class AsyncController {
    @Autowired
    AsyncService 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//开启异步注解功能
@SpringBootApplication
public class Springboot09TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(Springboot09TestApplication.class, args);
    }
}

二、邮件任务

1、引入依赖

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

2、配置mail

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

3、测试

简单邮件

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

复杂邮件

    @Test
    void contextLoads2() throws MessagingException {
        //一个复杂的邮件
        MimeMessage mimeMessage = mailSender.createMimeMessage();
 
        //组装
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
 
        //正文
        helper.setSubject("你好,rk");
        helper.setText("<h1 style='color:red'>测试邮件</h1>",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类

@Service
public 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//开启定时功能注解
@SpringBootApplication
public 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异步定时邮件任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java线性表排序示例分享

    java线性表排序示例分享

    这篇文章主要介绍了java线性表排序示例,需要的朋友可以参考下
    2014-03-03
  • Spring JPA 错题集解决案例

    Spring JPA 错题集解决案例

    这篇文章主要为大家介绍了Spring JPA 错题集解决案例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • java中JsonObject与JsonArray转换方法实例

    java中JsonObject与JsonArray转换方法实例

    在项目日常开发中常常会遇到JSONArray和JSONObject的转换,很多公司刚入职的小萌新会卡在这里,下面这篇文章主要给大家介绍了关于java中JsonObject与JsonArray转换方法的相关资料,需要的朋友可以参考下
    2023-04-04
  • SpringCloud3.x集成BigQuery的代码实现

    SpringCloud3.x集成BigQuery的代码实现

    Google BigQuery 是一种高性能、可应用于大数据分析的公主云数据库服务,Spring Cloud 提供了完善的工具和核心功能,可以进行泛动分布应用构建,本文给大家介绍了SpringCloud3.x集成BigQuery的代码实现,需要的朋友可以参考下
    2025-01-01
  • Java文件、文件夹权限修改的两种方法

    Java文件、文件夹权限修改的两种方法

    这篇文章主要给大家介绍了关于Java文件、文件夹权限修改的两种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • SpringBoot实现application配置信息加密

    SpringBoot实现application配置信息加密

    在配置文件中,我们有开发环境配置和生产环境配置,而生产环境的配置信息是需要做好防护的,避免外泄,所以本文为大家整理了application配置信息加密的方法,需要的可以参考下
    2023-07-07
  • java 多态与抽象类详解总结

    java 多态与抽象类详解总结

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类,而多态是同一个行为具有多个不同表现形式或形态的能力
    2021-11-11
  • 浅谈SpringBoot项目如何让前端开发提高效率(小技巧)

    浅谈SpringBoot项目如何让前端开发提高效率(小技巧)

    这篇文章主要介绍了浅谈SpringBoot项目如何让前端开发提高效率(小技巧),主要介绍了Swagger和Nginx提高效率的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Java实现数据库图片上传功能详解

    Java实现数据库图片上传功能详解

    这篇文章主要为大家详细介绍了如何使用Java实现数据库图片上传功能,包含从数据库拿图片传递前端渲染,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03
  • JAVA利用HttpClient进行HTTPS接口调用的方法

    JAVA利用HttpClient进行HTTPS接口调用的方法

    本篇文章主要介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08

最新评论