栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot集成异步任务、定时任务、邮件发送

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot集成异步任务、定时任务、邮件发送

目录
  • 功能扩展
    • 1、异步任务
    • 2、邮件发送
    • 3、定时任务

功能扩展 1、异步任务

SpringBoot集成了这些功能,我们只需要开启这些功能,并进行调用即可!

  • 创建一个SpringBoot项目并添加Web支持

  • 创建一个Service包,编写测试代码

    //部分代码
    @Service
    public class AsyncService {
    
      @Async//加上该注解标志着这是一个异步方法
      public void hello(){
        try {
          Thread.sleep(3000);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        System.out.println("执行了hello方法~");
      }
    }
    
  • 创建一个Controller包,编写控制类进行测试

    //部分代码
    @RestController
    public class TestController {
      @Autowired
      public AsyncService asyncService;
    
      @RequestMapping("/async")
      public String hello(){
        asyncService.hello();
        return "ok";
      }
    }
    
  • 在主启动类中开启异步任务注解功能

    //部分代码
    @EnableAsync//开启异步任务注解功能
    @SpringBootApplication
    public class FeatureApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(FeatureApplication.class, args);
        }
    
    }
    

总结

  • 开启异步任务核心注解:@Async @EnableAsync
  • 异步任务的特点就是:前端立刻相应,异步任务悄悄执行~
2、邮件发送
  • 导入相关依赖

    
      org.springframework.boot
      spring-boot-starter-mail
    
    
  • 配置文件设置

    spring.mail.username=2224909659@qq.com
    spring.mail.password=zldkdyoodxzxebhg
    spring.mail.host=smtp.qq.com
    # ssl
    spring.mail.properties.mail.stmp.ssl.enable=true
    

    ​

  • 分析MailSenderAutoConfiguration 配置类

  • JavaMailSenderImpl 发送邮件工具类,调用该类里面的send(MailMessage) 方法

    ​

  • SimpleMailMessage 简单邮件:实现了MailMessage 接口

  • MimeMessage 复杂邮件:继承了Message 类

    • 创建方式:构造器、利用JavaMailSenderImpl 工具类的createMimeMessage 方法
  • 简单测试

    //部分代码
    @Autowired(required = false)//标志该“属性”可以为空
    public JavaMailSenderImpl javaMailSender;
    
    @Test
    void contextLoads() {
      //发送一个简单邮件
      SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
    
      simpleMailMessage.setSubject("麻腾飞学习邮件发送");
      simpleMailMessage.setText("要培养分析源码的能力");
    
      simpleMailMessage.setFrom("2224909659@qq.com");
      simpleMailMessage.setTo("2224909659@qq.com");
    
      javaMailSender.send(simpleMailMessage);
    }
    
    @Test
    void test01() throws MessagingException {
      //发送一个复杂邮件
      MimeMessage mimeMessage = javaMailSender.createMimeMessage();
      MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
    
      //组装
      messageHelper.setSubject("麻腾飞加油啊!");
      messageHelper.setText("

    每天最少学习6个小时

    ",true); //添加附件 messageHelper.addAttachment("mtf.jpg",new File("D:\java自学资料\网站模板\博客项目参考\头像图片\a6.jpeg")); messageHelper.setFrom("2224909659@qq.com"); messageHelper.setTo("2224909659@qq.com"); javaMailSender.send(mimeMessage); }
3、定时任务

项目开发某一业务指定时间执行

//对应接口
TaskExecutor接口
TaskScheduler接口
//对应注解
@EnableScheduling
@Scheduled

测试:

  • 创建一个ScheduledService类(service包下)

    //主要代码
    @Scheduled(cron = "30 27 11 * * 0-7")//参数为cron表达式
    //秒 分 时 日 月 星期几
    public void test(){
      System.out.println("到点啦~");
    }
    
  • 启动类开启异步任务调度支持

    @EnableScheduling//开启定时任务支持
    @SpringBootApplication
    public class FeatureApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(FeatureApplication.class, args);
        }
    
    }
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号