异步、邮件、定时任务

  1. 异步、邮件、定时任务

14.1 异步任务

编写一个业务测试类

文件路径:com–dzj–service–AsynService.java

@Service
public class AsynService {

    @Async   //告诉spring这是一个异步的方法
    public void hello(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("数据正在处理...");
    }
}

在主启动器类上开启异步注解功能

@EnableAsync  //开启异步注解功能
@SpringBootApplication

编写测试接口

@RestController
public class AsynController {

    @Autowired
    AsynService asynService;

    @RequestMapping("/hello")
    public String hello(){
        asynService.hello();//停止三秒才执行,页面转圈~
        return "OK";
    }
}

14.2 邮件任务

导入相关依赖


    org.springframework.boot
    spring-boot-starter-mail

在邮箱设置中开启POP3/SMTP服务

 异步、邮件、定时任务

 异步、邮件、定时任务

点击我已发送,获得授权码

 异步、邮件、定时任务

编写相关配置文件

application.yaml

spring:
  mail:
    username: aadzj@qq.com
    password:             #填写上面的授权码作为密码
    host: smtp.qq.com
    properties:
      mail:
        smtp:
          ssl:
            enable: true  # 开启加密验证

在测试类中测试邮件发送

package com.dzj;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

@SpringBootTest
class Springboot09AsynchronousApplicationTests {

    @Autowired
    JavaMailSender mailSender;

    @Test
    void contextLoads() {

        //一个简单邮件的发送
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setSubject("支付宝到账80万元");  //邮件主题
        mailMessage.setText("项目收入");            //邮件正文
        mailMessage.setTo("aadzj@qq.com");         //收件人
        mailMessage.setFrom("aadzj@qq.com");       //发件人
        mailSender.send(mailMessage);
    }

    @Test
    void contextLoads2() throws MessagingException {
        //一个复杂邮件的发送,组装
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //正文
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
        helper.setSubject("支付宝到账100万元");  //邮件主题
        helper.setText("工资收入",true);  //邮件正文
        //附件
        helper.addAttachment("1.jpg",new File("E:\\Good Study\\dengzj.jpg"));
        helper.addAttachment("2.jpg",new File("E:\\Good Study\\dengzj.jpg"));
        helper.setTo("aadzj@qq.com");     //收件人
        helper.setFrom("aadzj@qq.com");   //发件人
        mailSender.send(mimeMessage);
    }

}

运行测试!

14.3 定时任务

文件路径:com–dzj–service–ScheduledService.java

编写业务测试类

package com.dzj.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

@Service
public class ScheduledSercvice {

    @Autowired
    JavaMailSender mailSender;
    /*
        在一个特定的时间执行这个方法
        cron  表达式~ 秒 分 时 日 月 周几
        cron="10 20 10 * * ?" 每天的10点20分10秒 执行一次
        cron="10 0/5 10,18 * * ?"  每天10点和18点,从第零分钟开始,每隔五分钟,第10秒执行一次
        cron="0 15 10 ? * 1-6"   每个月的周一到周六  10点15分执行一次
        cron="0/2 * * * * ?" 每隔两秒执行一次
     */

    @Scheduled(cron="0/10 * * * * ?")
    public void hello(){
        System.out.println("你被执行了。。。");
    }

    @Scheduled(cron="0/10 * * * * ?")
    public void sendMail(){
        //一个简单邮件的发送
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setSubject("支付宝到账80万元");
        mailMessage.setText("项目收入");
        mailMessage.setTo("aadzj@qq.com");
        mailMessage.setFrom("aadzj@qq.com");
        mailSender.send(mailMessage);
        System.out.println("邮件已发送");
    }
}

在主启动器类上开启定时注解功能

@EnableScheduling //开启定时注解功能
@SpringBootApplication

运行测试!

Original: https://www.cnblogs.com/aadzj/p/15636856.html
Author: 小公羊
Title: 异步、邮件、定时任务

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572748/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • asp.net中用户验证同步AD域

    using System; using System.Data; using System.Configuration; using System.Collections; usi…

    Java 2023年6月5日
    055
  • Java基础知识复习

    概念:存储在计算机内存中的一块位置,是存储数据的基本单位 组成部分:数据类型,变量名称,变量值 定义变量的步骤: 声明 赋值(变量的值必须和数据类型一致) # 定义方式一(声明并赋…

    Java 2023年6月5日
    057
  • knife4j通过js动态刷新全局参数

    背景 之前在为框架集成knife4j接口调试查看工具,使用了一段时间,使用体验上比较繁琐,因为接口都需要token,所以每次都要去f12查看token复制再创建全局参数,可能我只需…

    Java 2023年6月15日
    085
  • OO第一单元总结

    OO第一单元总结 2022.3.22 陈一文 OO第一单元总结 – 2022.3.22 陈一文 Hw1 设计思路 程序分析 bug分析 测试思路 综合评价 Hw2 设计…

    Java 2023年6月13日
    071
  • Spring Boot入门系列(二十)快速打造Restful API 接口

    spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis、整合Th…

    Java 2023年5月30日
    082
  • IO流思维导图

    IO流思维导图 IO思维导图总结 总览: 1.文件 public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 (几乎…

    Java 2023年6月6日
    074
  • 使用Java的GUI技术实现 “ 贪吃蛇 ” 游戏

    详细教程: 使用Java的GUI技术实现 ” 贪吃蛇 ” 游戏_IT打工酱的博客-CSDN博客 Original: https://www.cnblogs….

    Java 2023年6月7日
    052
  • 分页查询

    1.分页概念 分页查询则是在页面上将本来很多的数据分段显示,每页显示用户自定义的行数。可提高用户体验度,同时减少一次性加载,内存溢出风险。 1.1.真分页 每次翻页从数据库中查询数…

    Java 2023年6月15日
    073
  • Netty源码分析之ByteBuf(二)—内存分配器ByteBufAllocator

    Netty中的内存分配是基于ByteBufAllocator这个接口实现的,通过对它的具体实现,可以用来分配我们之前描述过的任意类型的BytebBuf实例;我们先看一下ByteBu…

    Java 2023年6月9日
    068
  • Java—Lambda

    学习Lambda的理由 为了了解Lambda表达式,我们必须了解什么是函数式接口,这是Lambda表达式得以实现的依据。 在java中,函数式接口指 注解了@FunctionalI…

    Java 2023年6月7日
    086
  • Spring Data JPA系列5:让IDEA自动帮你写JPA实体定义代码

    大家好,又见面了。 这是本系列的最后一篇文档啦,先来回顾下前面4篇: 在第1篇《Spring Data JPA系列1:JDBC、ORM、JPA、Spring Data JPA,傻傻…

    Java 2023年6月7日
    067
  • Windows平台下nginx跨域配置

    1)下载地址: http://nginx.org 2)启动 解压至d:\nginx,运行nginx.exe(即nginx -c conf\nginx.conf),默认使用80端口,…

    Java 2023年5月30日
    071
  • II-第十二章:(1)SpringCloud Alibaba简介

    一、SpringCloud Alibaba Spring Cloud Netflix Projects Entering Maintenance Mode 什么是维护模式? 将模块…

    Java 2023年5月29日
    059
  • 【Redis】简单动态字符串SDS

    C语言字符串 char *str = "redis"; // 可以不显式的添加\0,由编译器添加 char *str = "redis\0"…

    Java 2023年6月8日
    099
  • JavaSE_关键字 接口 代码块 枚举

    1 Java中的关键字 1.1 static关键字 static特点 : 静态成员被所在类的所有对象共享 随着类的加载而加载 , 优先于对象存在 可以通过对象调用 , 也可以通过类…

    Java 2023年6月9日
    069
  • java-算法-排列组合

    package com.qinghuainvest.utils.algorithm; import java.util.ArrayList; import java.util.Ar…

    Java 2023年5月29日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球