Springboot基础学习之(二十二):异步任务和邮件任务

方向一:高效学习方法分享

我认为学习的最好的办法就是做笔记:本人特别喜欢在网上学习一些课堂外的知识,但是如果你没有及时的复习,要想找到自己想要的知识该怎么办呢?对,就是做笔记我在csdn这个app发的所有内容都是笔记,既可以帮助到需要的人,还可以通过文章的编辑复习了一下新的知识,同样在以后的工作生涯里也可以通过笔记去找到自己需要的知识

方向二:高效学习工具/平台推荐

b站:这个app里有很多关于计算机的知识

之前的文章讲解了swagger这个接口框架,这篇文章讲解主要的内容就是异步任务和邮件任务

什么是异步任务?

有异步就有同步,同步任务是什么?

同步:同步是指一个进程在执行某个请求的时候,如果该请求需要一段时间才能返回信息,那么这个进程会一直等待下去,直到收到返回信息才继续执行下去。

异步:异步是指进程不需要一直等待下去,而是继续执行下面的操作,不管其他进程的状态,当有信息返回的时候会通知进程进行处理,这样就可以提高执行的效率了,即异步是我们发出的一个请求,该请求会在后台自动发出并获取数据,然后对数据进行处理,在此过程中,我们可以继续做其他操作,不管它怎么发出请求,不关心它怎么处理数据。

一句话概括:同步任务就是等,异步任务就是跨过

模拟同步任务

一:创建一个类:模拟延时出现的状况

package com.example.demo.service;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@Service    //添加注解:对于 service 层的类,在类上用 @Service 注解声明:并将此类添加到容器中
public class AsyncService {
        public void hello() throws Exception
        {
            Thread.sleep(3000);   //延时3秒
            System.out.println("异步请求");
        }
}

二:创建接口:模拟网页



@RestController
public class controller_test {
    @Autowired
    AsyncService asyncService;

    @GetMapping("/")
    public String hello() throws Exception {
        asyncService.hello();
        return "hello world";


        //什么是异步任务
//        正常的情况下,同步任务就是在不可逆,只能按照顺序而来,一环接着一环
//        异步任务则不是如此,他会遇到一个程序需要很多的时间,系统不会原地等待,他会先向下执行,等时间长的程序执行完擦进行返回
    }
}

运行项目:

同步任务

访问接口,结果并不是立即出现的,而是延时3秒才将出现接口的返回值

 通过spring boot这个框架实现异步任务

方法很简单添加一个注解即可

@Service
public class AsyncService {
         @Async
        public void hello() throws Exception
        {
            Thread.sleep(3000);
            System.out.println("异步请求");
        }
}

运行项目访问接口:仔细看一下控制台语句内容的输出和网页访问的接口出现的情况

通过观察发现:网页访问的接口内容并没有产生延时,立即出现要显示的内容,但是控制台的输出语句却是在访问之后3秒之后才输出的语句,这就是异步任务,跨过现在需要等待的任务去执行下一个代码,之后在返回需要输出的内容。

邮件任务

通过spring boot项目实现自动化邮件的发送

注意:这里实现的邮件发送使用的是qq邮箱

一:导入依赖:

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

二:开启qq邮箱POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

点击设置

 

 点击服务:开启下面图片中的服务

在点击管理服务

 生成授权码(作为登录使用的密码)

 在配置文件进行登陆配置application.properties

spring.mail.username=2602499389@qq.com
spring.mail.password=输入刚拿到的授权码
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true

环境搭配完成进行发送邮件服务

先来一个简单邮件的发送,在测试类中进行代码的编写

package com.example.demo;

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.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.annotation.Resource;
import javax.mail.internet.MimeMessage;
import java.io.File;

@SpringBootTest
class DemoApplicationTests {
    @Resource
    JavaMailSenderImpl javaMailSender;

    @Test
    void contextLoads() {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setSubject("--------");
        simpleMailMessage.setText("不想睡醒的梦");
        simpleMailMessage.setTo("2602499389@qq.com");   //收件人
        simpleMailMessage.setFrom("2602499389@qq.com"); //发件人
        javaMailSender.send(simpleMailMessage);

    }


}

运行test

发送成功

带有附件邮件进行发送

package com.example.demo;

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.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.annotation.Resource;
import javax.mail.internet.MimeMessage;
import java.io.File;

@SpringBootTest
class DemoApplicationTests {
    @Resource
    JavaMailSenderImpl javaMailSender;

    @Test
    void contextLoads() {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setSubject("--------");
        simpleMailMessage.setText("不想睡醒的梦");
        simpleMailMessage.setTo("2602499389@qq.com");
        simpleMailMessage.setFrom("2602499389@qq.com");
        javaMailSender.send(simpleMailMessage);

    }
    @Test
    void contextloads2() throws Exception{
        MimeMessage MailMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(MailMessage,true);
        helper.setSubject("复杂界面");
        //文本编写
        helper.setText("<p style='color:red'>不想睡醒的梦</p>",true);
        //附件为图片
        helper.addAttachment("1.jpeg",new File("C:\\Users\\lenovo\\Desktop\\1.jpeg"));
        helper.addAttachment("1.jpeg",new File("C:\\Users\\lenovo\\Desktop\\1.jpeg"));
        helper.setTo("2602499389@qq.com");
        helper.setFrom("2602499389@qq.com");
        javaMailSender.send(MailMessage);

    }

}

 运行第二test

 附件发送成功

基础的邮件任务完成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想睡醒的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值