SpringBoot异步任务、邮件任务

1、异步任务

为什么需要异步任务?(使用场景)
(1)比如我们在上传资源、下载资源或是邮件发送的时候,都需要等待一段时间,而这对用户的体验不好,我们可以先跳转页面,然后等到资源处理完成之后,返回成功信息!这样即采取了异步任务调度

1、Service层【业务层】

@Service
public class AsyncService {
    
    public void hello(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("数据正在处理");
    }
}

2、Controller

@RestController
public class AsyncController {

    @Autowired
    private AsyncService asyncService;

    @RequestMapping("/hello")
    public String hello(){
        asyncService.hello();
        return "OK";
    }
}

在这个业务流程中,用户点击完之后,需要三秒之后才能进行页面的跳转,用户体验极差,有可能在等待的过程中,用户不知道到底是自己的网络问题,还是服务器处理慢的问题,有可能把界面给关掉,所以为了避免这个情况的发生,我们需要采取异步任务调度,先进行页面跳转,信息处理成功之后再返回成功信息!而SpringBoot中处理这个情况很方便,只需要在service层加入@Async注解

3、添加@Async注解的service层

@Service
public class AsyncService {
    
    @Async
    public void hello(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("数据正在处理");
    }
}

4、当然在熟悉SpringBoot开发的时候,我们知道在业务处理的过程中,添加了新的注解,你就需要在主启动类上 @EnableXXXX,所以在该处我们在主启动类上加上@EnableAsync注解来开启异步功能,这个时候就可以先执行跳转,在进行方法的执行

@EnableAsync
@SpringBootApplication
public class SpringbootTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootTestApplication.class, args);
    }

}

到这里我们就知道了如何开启异步任务调度,主要的应用场景也知道在哪儿

2、邮件任务

邮件任务:顾名思义,我们听到这个名词的时候,就知道这个是针对邮件发送接收的功能,这个在开发的过程中很常见,我们常常在网站中,变成他们的用户的时候,很多时候都是通过邮箱来进行注册用户,所以这个功能还是值得我们去掌握的

1、进行邮箱-设置-账户-开启服务-POP3/SMTP
在这里插入图片描述

2、导入依赖:很多时候,我们在进行某种场景开发的时候都需要导入依赖

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

3、在配置文件中配置相关的信息

spring.mail.username=2425540101@qq.com
spring.mail.password=cyxahzfhycwheafj #需要在qq邮箱那边生成授权码
spring.mail.host=smtp.qq.com
# 开启加密验证(QQ独有,163没有)
spring.mail.properties.mail.smtp.ssl.enable=true

4、编写测试类
(1)简单邮件发送

@SpringBootTest
class DemoApplicationTests {

    //注入邮件发送
    @Autowired
    JavaMailSenderImpl javaMailSender;

    @Test
    void contextLoads() {
        //一个简单的邮件
        SimpleMailMessage simpleMessage = new SimpleMailMessage();
        simpleMessage.setSubject("我是标题");//设置邮件主题
        simpleMessage.setText("我是正文");//邮件内容

        simpleMessage.setTo("2423154611@qq.com");//发给谁
        simpleMessage.setFrom("2425540101@qq.com");//邮件来自谁

        javaMailSender.send(simpleMessage);
    }
}

(2)复杂邮件发送

    @Test
    void contextLoads2() throws MessagingException {
        //一个复杂的邮件
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //组装 开启
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        //正文
        helper.setSubject("邮件·Plus");
        helper.setText("<p style='color:red'>我可以使用html</p>",true);
        //附件
        helper.addAttachment("test.jpg",new File("C:\\Users\\Administrator\\Desktop\\1.jpg"));

        helper.setTo("260474420@qq.com");//发给谁
        helper.setFrom("260474420@qq.com");//邮件来自谁
        javaMailSender.send(mimeMessage);
    }

这就实现了简单的邮件发送功能,当然这是我们在进行测试的过程,在开发过程中,我们需要对方法进行封装,做到通过我们注入,实现对某个用户,发送某些内容,提高系统的灵活性!!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Coder陈、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值