簡介
本文配置SpringBoot的3種任務,異步任務,定時任務,郵件任務。更多內容
異步任務
- 在主入口開啓異步任務配置
@EnableAsync //開啓異步註解
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
- 通過
@Async
聲明一個異步任務
@Service
public class TeskService {
@Async
public void asyncService(){
System.out.println("異步任務處理數據");
}
}
定時任務
- 程序主入口開啓定時任務
@EnableScheduling //開啓基於註解的定時任務
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
- 配置定時任務
@Service
public class TeskService {
@Scheduled(cron="0/4 * * * * *")
public void timeService(){
System.out.println("每4秒執行一次,執行定時器了!");
}
}
- cron的表達式說明
- corn表達是由6位組成,*表示所有。
6尾數分別表示這幾個時間
second(秒), minute(分), hour(時), day of month(日), month(月), day of week(周幾)
-
corn表達是各個字段的允許值
|字段|允許值|允許的特殊符號|
|:----|:------|-------|
|秒 |0-59 |, - * /|
|分 |0-59 |, - * /|
|小時 |0-23| , - * /|
|日期 |1-31 |, - * ? / L W C|
|月份 |1-12| , - * /|
|星期| 0-7或SUN-SAT 0,7是SUN |, - * ? / L C #| -
特殊符號代表的含義
|符號|含義|
|----|----|
|, |枚舉
|- |區間
|* |任意
|/ |步長
|? |日/星期衝突匹配
|L |最後
|W |工作日
|C |和calendar聯繫後計算過的值
|# |星期,4#2,第2個星期四
- 一些例子用於解釋
【0 0/5 14,18 * * ?】 每天14點整,和18點整,每隔5分鐘執行一次
【0 15 10 ? * 1-6】 每個月的週一至週六10:15分執行一次
【0 0 2 ? * 6L】每個月的最後一個週六凌晨2點執行一次
【0 0 2 LW * ?】每個月的最後一個工作日凌晨2點執行一次
【0 0 2-4 ? * 1#1】每個月的第一個週一凌晨2點到4點期間,每個整點都執行一次;
【0 * * * * MON-SAT】星期一到星期6 每到整秒都執行
【0,1,2,3,4 * * * * MON-SAT】星期一到星期6 每到整0,1,2,3,4秒都執行0-4 這個同理
郵件任務
- 在pom.xml裏面引入郵件啓動器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 在配置文件裏面配置相應信息
spring:
mail:
#用戶名
username: [email protected]
#這個密碼不是郵箱的登錄密碼,需要在郵箱服務器裏面去生成的授權嗎,qq郵箱在qq 裏面的 設置-->賬戶裏面
password: xxxxxxx
#qq服務器是下面這個,其他的服務器需要到相應的地方去找,qq qq在QQ郵箱---->設置---賬戶裏面去找
host: smtp.qq.com
- 事例代碼
@Autowired JavaMailSenderImpl mailSender; //簡單郵件測試 @Test public void sendMailTest() { SimpleMailMessage message = new SimpleMailMessage(); //設置郵件的基本信息 message.setSubject("簡單郵件發送測試"); message.setText("我是測試內容"); message.setTo("[email protected]"); message.setFrom("[email protected]"); mailSender.send(message); } //帶文件的郵件發送測試 @Test public void sendMailTest2() throws Exception{ //1、創建一個複雜的消息郵件 MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); //郵件設置 helper.setSubject("郵件測試"); //可以加html 標籤,單第二個參數要爲true ,把html 標籤功能開啓 helper.setText("<b style='color:red'>郵件測試類容,可以加標籤哦</b>,哈哈",true); helper.setTo("[email protected]"); helper.setFrom("[email protected]"); //上傳文件 helper.addAttachment("1.jpg",new File("C:\\Users\\Administrator.BF-20180801KGCC\\Desktop\\頭像\\1.jpg")); helper.addAttachment("2.jpg",new File("C:\\Users\\Administrator.BF-20180801KGCC\\Desktop\\頭像\\2.jpg")); mailSender.send(mimeMessage); }