SpringBoot與非同步任務、定時任務、郵件任務

malizhi發表於2018-12-17

環境: IDEA版本2017.3.1 x64, JDK1.8, SpringBoot2.1.1

非同步任務

  • 在需要開啟非同步的服務加上註解:@Async
@Service
public class AsyncService {

    //告訴SpringBoot這是一個非同步任務,SpringBoot會自動開啟一個執行緒去執行
    @Async
    public void testAsyncService(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("執行非同步成功");
    }
}
複製程式碼
  • 在主配置類上新增開啟非同步註解功能:@EnableAsync
@EnableAsync   //開啟非同步註解功能
public class SpringbootMybatisApplication {
複製程式碼

定時任務

  • 在需要開啟定時任務的服務上新增註解@Scheduled(cron = "0 * * * * MON-SAT")
    /* {秒數} {分鐘} {小時} {日期} {月份} {星期} {年份(可為空)}
     *  cron的六個符號分別對應以上時間單位,空格隔開
     *  * 表示所有值;
     *  ? 表示未說明的值,即不關心它為何值;
     *  - 表示一個指定的範圍;
     *  , 表示附加一個可能值;
     *   / 符號前表示開始時間,符號後表示每次遞增的值;
     */
@Service
public class ScheduledService {
    @Scheduled(cron = "0 * * * * MON-SAT")
    public void testSchedule(){
        System.out.println("測試定時任務成功");
    }
}
複製程式碼

SpringBoot與非同步任務、定時任務、郵件任務

  • 在主配置類上開啟定時任務註解功能:@EnableScheduling

郵件任務

  • 引入郵件依賴元件
<!-- 引入郵件,如果發現注入失敗,可以自行到maven官網下載jar放進對應資料夾 -->
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
複製程式碼

可能會產生的錯誤:注入失敗(可以自行到maven官網下載jar放進對應資料夾):

SpringBoot與非同步任務、定時任務、郵件任務

  • 郵箱開啟POP3/SMTP服務

    SpringBoot與非同步任務、定時任務、郵件任務

  • 在主配置檔案(yml方式)中配置郵箱引數

spring:
  mail:
    username: yourqq@qq.com
    password: xxxxxx  //授權碼,在服務選項中獲取
    host: smtp.qq.com   //qq郵箱伺服器
    properties:
      mail:
        smtp:
          ssl:
            enable: true //開啟安全連線
複製程式碼
  • 測試郵件傳送
@Autowired
JavaMailSenderImpl mailSender;

/**
* 建立簡單訊息郵件
*/
@Test
    public void testMail(){
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("這是主題");
        message.setText("這是內容");
        //收件人
        message.setTo("xxxxx@qq.com");
        //傳送人
        message.setFrom("xxxxx@qq.com");
        mailSender.send(message);
}

/**
     * 建立複雜訊息郵件
     */
    @Test
    public void testMail02() throws MessagingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setSubject("這是複雜訊息郵件主題");
        helper.setText("<b style='color:red;'>這是複雜訊息郵件內容</b>",true);
        //新增附件1
        helper.addAttachment("1.jpg",new File("E:\\desktop\\8234.jpg"));
        //新增附件2
        helper.addAttachment("2.docx",new File("E:\\desktop\\形勢與政策課作業.docx"));
        //收件人
        helper.setTo("xxxx@qq.com");
        //傳送人
        helper.setFrom("xxxxx@qq.com");
        mailSender.send(mimeMessage);
    }



複製程式碼

測試成功

SpringBoot與非同步任務、定時任務、郵件任務

更多Spring Boot整合可瀏覽此部落格:malizhi.cn

相關文章