14. 异步、邮件、定时任务
14.1 异步任务
编写一个业务测试类
文件路径:com--dzj--service--AsynService.java
|
|
|
public class AsynService { |
|
|
|
//告诉spring这是一个异步的方法 |
|
public void hello(){ |
|
try { |
|
Thread.sleep(3000); |
|
} catch (InterruptedException e) { |
|
e.printStackTrace(); |
|
} |
|
System.out.println("数据正在处理..."); |
|
} |
|
} |
在主启动器类上开启异步注解功能
|
//开启异步注解功能 |
|
|
编写测试接口
|
|
|
public class AsynController { |
|
|
|
|
|
AsynService asynService; |
|
|
|
|
|
public String hello(){ |
|
asynService.hello();//停止三秒才执行,页面转圈~ |
|
return "OK"; |
|
} |
|
} |
14.2 邮件任务
导入相关依赖
|
<dependency> |
|
<groupId>org.springframework.boot</groupId> |
|
<artifactId>spring-boot-starter-mail</artifactId> |
|
</dependency> |
在邮箱设置中开启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; |
|
|
|
|
|
class Springboot09AsynchronousApplicationTests { |
|
|
|
|
|
JavaMailSender mailSender; |
|
|
|
|
|
void contextLoads() { |
|
|
|
//一个简单邮件的发送 |
|
SimpleMailMessage mailMessage = new SimpleMailMessage(); |
|
mailMessage.setSubject("支付宝到账80万元"); //邮件主题 |
|
mailMessage.setText("项目收入"); //邮件正文 |
|
mailMessage.setTo("aadzj@qq.com"); //收件人 |
|
mailMessage.setFrom("aadzj@qq.com"); //发件人 |
|
mailSender.send(mailMessage); |
|
} |
|
|
|
|
|
void contextLoads2() throws MessagingException { |
|
//一个复杂邮件的发送,组装 |
|
MimeMessage mimeMessage = mailSender.createMimeMessage(); |
|
//正文 |
|
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); |
|
helper.setSubject("支付宝到账100万元"); //邮件主题 |
|
helper.setText("<p style='color:red'>工资收入</p>",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; |
|
|
|
|
|
public class ScheduledSercvice { |
|
|
|
|
|
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 * * * * ?" 每隔两秒执行一次 |
|
*/ |
|
|
|
|
|
public void hello(){ |
|
System.out.println("你被执行了。。。"); |
|
} |
|
|
|
|
|
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("邮件已发送"); |
|
} |
|
} |
在主启动器类上开启定时注解功能
|
//开启定时注解功能 |
|
|
运行测试!