方向一:高效学习方法分享
我认为学习的最好的办法就是做笔记:本人特别喜欢在网上学习一些课堂外的知识,但是如果你没有及时的复习,要想找到自己想要的知识该怎么办呢?对,就是做笔记我在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);
}
}