14. 異步、郵件、定時任務
14.1 異步任務
編寫一個業務測試類
文件路徑:com--dzj--service--AsynService.java
@Service
public class AsynService {
@Async //告訴spring這是一個異步的方法
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("數據正在處理...");
}
}
在主啟動器類上開啟異步注解功能
@EnableAsync //開啟異步注解功能
@SpringBootApplication
編寫測試接口
@RestController
public class AsynController {
@Autowired
AsynService asynService;
@RequestMapping("/hello")
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;
@SpringBootTest
class Springboot09AsynchronousApplicationTests {
@Autowired
JavaMailSender mailSender;
@Test
void contextLoads() {
//一個簡單郵件的發送
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setSubject("支付寶到賬80萬元"); //郵件主題
mailMessage.setText("項目收入"); //郵件正文
mailMessage.setTo("aadzj@qq.com"); //收件人
mailMessage.setFrom("aadzj@qq.com"); //發件人
mailSender.send(mailMessage);
}
@Test
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;
@Service
public class ScheduledSercvice {
@Autowired
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 * * * * ?" 每隔兩秒執行一次
*/
@Scheduled(cron="0/10 * * * * ?")
public void hello(){
System.out.println("你被執行了。。。");
}
@Scheduled(cron="0/10 * * * * ?")
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("郵件已發送");
}
}
在主啟動器類上開啟定時注解功能
@EnableScheduling //開啟定時注解功能
@SpringBootApplication
運行測試!
