springboot配置異步任務,定時任務和郵件任務

簡介

本文配置SpringBoot的3種任務,異步任務,定時任務,郵件任務。更多內容

異步任務

  1. 在主入口開啓異步任務配置
@EnableAsync //開啓異步註解
@SpringBootApplication
public class SpringbootApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringbootApplication.class, args);
	}
}
  1. 通過@Async聲明一個異步任務
@Service
public class TeskService {
    @Async
    public void asyncService(){
        System.out.println("異步任務處理數據");
    }
}

定時任務

  1. 程序主入口開啓定時任務
@EnableScheduling  //開啓基於註解的定時任務
@SpringBootApplication
public class SpringbootApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringbootApplication.class, args);
	}
}
  1. 配置定時任務

@Service
public class TeskService {
    @Scheduled(cron="0/4 * * * * *")
    public void timeService(){
        System.out.println("每4秒執行一次,執行定時器了!");
    }

}
  1. cron的表達式說明
  • corn表達是由6位組成,*表示所有。
    6尾數分別表示這幾個時間
    second(秒), minute(分), hour(時), day of month(日), month(月), day of week(周幾)
  1. corn表達是各個字段的允許值
    |字段|允許值|允許的特殊符號|
    |:----|:------|-------|
    |秒 |0-59 |, - * /|
    |分 |0-59 |, - * /|
    |小時 |0-23| , - * /|
    |日期 |1-31 |, - * ? / L W C|
    |月份 |1-12| , - * /|
    |星期| 0-7或SUN-SAT 0,7是SUN |, - * ? / L C #|

  2. 特殊符號代表的含義
    |符號|含義|
    |----|----|
    |, |枚舉
    |- |區間
    |* |任意
    |/ |步長
    |? |日/星期衝突匹配
    |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  每到整01234秒都執行0-4 這個同理

郵件任務

  1. 在pom.xml裏面引入郵件啓動器
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  1. 在配置文件裏面配置相應信息
spring:
  mail:
    #用戶名
    username: [email protected]
    #這個密碼不是郵箱的登錄密碼,需要在郵箱服務器裏面去生成的授權嗎,qq郵箱在qq 裏面的 設置-->賬戶裏面
    password: xxxxxxx
    #qq服務器是下面這個,其他的服務器需要到相應的地方去找,qq qq在QQ郵箱---->設置---賬戶裏面去找
    host: smtp.qq.com

  1. 事例代碼
    @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);
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章