任务
异步任务~
定时任务~
异步任务
1.异步任务的作用是当用户在网页使用的过程中,如用户需要发送一封邮件。
2.在不使用到异步任务的时候页面会在邮箱发送的过程中一直处于白屏状态直到邮件发完,这样子很影响用户的体验感。
3.所以在这种情况下就需要用到异步任务让他在不影响用户使用的情况下去完成某件事。
@EnableAsync //启动异步任务的注解
@SpringBootApplication
public class Springboot09TestApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot09TestApplication.class, args);
}
}
一般异步任务设置在业务层
@Service
public class SendMailService {
@Autowired
JavaMailSenderImpl mailSender;
@Async // 这个就是一个异步任务的注解
public void sendMail(String subject, String text, String to, String from) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setSubject(subject);
simpleMailMessage.setText(text);
simpleMailMessage.setTo(to);
simpleMailMessage.setFrom(from);
mailSender.send(simpleMailMessage);
}
}
邮件发送~(基于springBoot环境下)
这个邮箱发送案例只能是固定的邮件发送者,而邮件的接受者是可以变动的!
# 发送邮箱需要用到的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
# 在application.properties中配置
spring.mail.username=2336164407@qq.com
# 在邮箱设置里产生的一个明文密码
spring.mail.password=XXXXXXXXXXX
spring.mail.host=smtp.qq.com
# 使用qq邮箱需要的额外添加
# 开启加密验证
spring.mail.properties..mail.smtp.ssl.enable=true
明文密码的获取方式
在账号这个界面里面下滑找到下图这个位置,去开启!!!
1.如果你是没有开启状态的话,当你点击开启时会出现一个验证需要你填。
2.你的QQ有绑定qq安全中心的话就会有选择给你选择使用手机令牌。
3.如果是没有绑定过的话就会直接显示一个需要用手机短信去验证的。
(建议使用手机令牌去验证)
测试
// 获取到类
@Autowired
JavaMailSenderImpl mailSender;
发送一个简单的邮件
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setSubject("你好呀!~~~"); // 标题
simpleMailMessage.setText("me123"); // 文本内容
simpleMailMessage.setTo("2336164407@qq.com"); // 接受者的邮箱
simpleMailMessage.setFrom("2336164407@qq.com"); // 发送者的邮箱
mailSender.send(simpleMailMessage);
发送一个复杂的邮件
// 一个复杂的邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 组装
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); /// true 表示支持多文件 false 表示不支持多文件
// 正文
helper.setSubject("me123"); // 标题
helper.setText("<p style='color: red'>me123</p>",true); // 内容 true表示可以识别html false表示不能识别
// 附件
helper.addAttachment("文件名",new File("文件路径"));
helper.addAttachment("文件名",new File("文件路径"));
helper.setTo("2336164407@qq.com"); // 接受者的邮箱
helper.setFrom("2336164407@qq.com"); // 发送者的邮箱
mailSender.send(mimeMessage);
把复杂邮件封装起来
// 只有在springBoot环境中这个套封装发送邮件类才有效果
public void sendMail(boolean multipart, // 是否支持多文件
boolean html, // 是否解析内容中的html标签
String subject, // 邮箱标签
String text, // 邮箱内容
Map<String,String> attachments, // 附件
String to, // 接受者的邮箱
String from // 发送者的邮箱
) throws MessagingException {
// 一个复杂的邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 组装
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,multipart);
// 正文
helper.setSubject(subject);
helper.setText(text,html);
// 附件
for (String key : attachments.keySet()) {
helper.addAttachment(key,new File(attachments.get(key)));
}
helper.setTo(to);
helper.setFrom(from);
mailSender.send(mimeMessage);
}
定时任务
@EnableScheduling //需要在启动类上面配置一个注释
@EnableScheduling // 这是一个启动定时任务的注解
@SpringBootApplication
public class Springboot09Text1Application {
public static void main(String[] args) {
SpringApplication.run(Springboot09Text1Application.class, args);
}
}
测试
cron = "秒 分 时 日 月 (0-7)星期"
@Scheduled(cron = "0 27 15 * * ?")
public void hello() {
System.out.println("hello,执行了");
}
原视频链接:https://www.bilibili.com/video/BV1PE411i7CV?p=51