异步、邮件、定时任务

  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/610977/

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

(0)

大家都在看

  • 中土批量运维神器《ps1屠龙刀》 pk 西域批量运维圣器《ansible圣火令》

    据故老相传,运维界有句话:”脚林至尊,宝刀【ps1屠龙】,号令被控,莫敢不从”。 https://gitee.com/chuanjiao10/kasini3…

    Linux 2023年6月14日
    0116
  • 我为儿子开发的第一款Android App,用于九九乘法练习

    用一天时间在macbook上安装好了Android Studio For Mac,注意dl.google.com只支持电信网络下载,家里宽带如果是移动或者联通的,使用AS下载And…

    Linux 2023年6月14日
    0101
  • sftp配置

    有很多方法,可实现在网络上分享文件。其中之一为FTP协议。但FTP通过明文传输数据,不安全。幸运的是,SSH协议族中包含了用于传输文件的SFTP协议。 事实上,任何远程主机的用户,…

    Linux 2023年6月14日
    0116
  • Linux系统查看磁盘可用空间的5个命令

    大家好,我是良许。 工作中,经常会遇到磁盘爆满的情况,尤其是一台服务器运行了 N 年之后,里面会充满各种各样垃圾文件,比如:编译产生的中间文件、打包的镜像文件、日志文件,等等。 别…

    Linux 2023年6月14日
    098
  • django.template.exceptions.TemplateDoesNotExist: django_filters/rest_framework/form.html

    django.template.exceptions.TemplateDoesNotExist: django_filters/rest_framework/form.htmlER…

    Linux 2023年6月14日
    0157
  • margin-top塌陷

    一、问题描述 ​ 在两个及以上的盒子嵌套时候,内部的盒子设置的 margin-top 的效果会加到最外边的盒子上,导致内部的盒子margin-top设置失败。 – 示例…

    Linux 2023年6月14日
    0111
  • 零成本搭建个人博客之图床和cdn加速

    本文属于零成本搭建个人博客指南系列 为什么要使用图床 博客文章中的图片资源文件一般采用本地相对/绝对路径引用,或者使用图床通过外链进行引用展示。本地引用的弊端我认为在于: 图片和博…

    Linux 2023年6月7日
    0122
  • MySQL之存储引擎、基本数据类型及约束条件

    一、存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,…

    Linux 2023年6月14日
    097
  • 渣画质视频秒变清晰,“达芬奇”工具集帮你自动搞定

    https://www.msra.cn/zh-cn/news/features/davinci 2022-06-23 | 作者:微软亚洲研究院 编者按:是否时常”考古&…

    Linux 2023年6月13日
    0186
  • 基于Swoole和Redis实现的并发队列处理系统

    由于PHP不支持多线程,但是作为一个完善的系统,有很多操作都是需要异步完成的。为了完成这些异步操作,我们做了一个基于Redis队列任务系统。 大家知道,一个消息队列处理系统主要分为…

    Linux 2023年5月28日
    096
  • usermod -aG命令

    原文链接:https://www.zhoubotong.site/post/73.html添加用户uos到组groupA里: usermod -a -G groupA uos 例如…

    Linux 2023年6月6日
    02.2K
  • linux bash 手册

    1、Linux shell简介 shell是一种特殊的交互式工具,包含了一组内部命令,这些命令可以完成复制文件,移动文件,显示和终止程序等操作。shell的核心是命令行提示符,它允…

    Linux 2023年6月7日
    089
  • Java — 枚举

    枚举是 JDK5 中引入的特性,由 enum 关键字来定义一个枚举类。 格式: enum 枚举类名 { 枚举项1, 枚举项2, …; 成员变量; 构造方法 成员方法 } 说明:…

    Linux 2023年6月8日
    095
  • PowerShell yarn : 无法加载文件 C:UsersAdminAppDataRoamingnpmyarn.ps1,因为在此系统因为在此系统上禁止运行脚本。

    1、搜索powershell,右键以管理员身份运行 2、若要在本地计算机上运行您编写的未签名脚本和来自其他用户的签名脚本,请使用以下命令将计算机上的 执行策略更改为 RemoteS…

    Linux 2023年5月28日
    0115
  • Windows 域控配置时间同步

    此功能是因内网时间与互联网时间不同步,需我们手动指定互联网NTP服务器来同步时间。一般默认情况下,加域客户端同步的是域主机的时间。如果域控的主机时间不准的话,那么域内的客户端也就随…

    Linux 2023年6月8日
    0154
  • redis用法介绍

    Jedis常用方法API Redis命令用scan代替keys、smembers等命令 Java Spring 与 Redis 操作封装源码 Redis API 必杀解读:引入Re…

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