天天看點

【Spring Boot】異步任務 定時任務 郵件發送一、異步任務二、定時任務三、郵件發送

文章目錄

  • 一、異步任務
  • 二、定時任務
  • 三、郵件發送

一、異步任務

步驟:

  1. 在需要異步的方法前加上注解:

    @Async

  2. springboot啟動類加上開啟異步的注解:

    @EnableAsync

例子:

  1. 一個service類:有一個test異步方法,停頓6s後輸出XX在控制台。
@Service
public class TestService {


    //告訴Spring===》這是一個異步的方法:@Async
    @Async
    public void test(){
        try {
            Thread.sleep(6000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


        System.out.println("資料正在處理........");
    }
}
           
  1. 在一個controller類中調用上面的service類:
@RestController
public class TestController {

    @Autowired
    TestService testService;

    @RequestMapping("/hello")
    public String hello(){
        //調用異步方法:
        testService.test();
        return "Hello";
    }
}
           

通路:http://localhost:8080/hello網頁,由于test()方法為一個異步任務,通路頁面時不會等待

testService.test();

執行完後

return "Hello";

,而是直接

return "Hello";

二、定時任務

步驟:

  1. 在需要定時的方法前加上注解:

    @Scheduled(cron = "0 25 13 * * ?")

  2. springboot啟動類加上開啟定時的注解:

    @EnableScheduling

啟動springboot,該方法會在每天的13:25執行

@Service
public class ScheduleService {

    // cron表達式~
    // 秒 分 時 日 月 周幾~
    @Scheduled(cron = "0 25 13 * * ?")
    public void test(){
        System.out.println("=======執行了=======");
    }
}
           

cron常用表達式:6個參數,空格隔開:秒 分 時 日 月 周幾~

(1)0 0 2 1 * ? * 表示在每月的1日的淩晨2點調整任務

(2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15執行作業

(3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每個月的最後一個星期五上午10:15執行作

(4)0 0 10,14,16 * * ? 每天上午10點,下午2點,4點

(5)0 0/30 9-17 * * ? 朝九晚五工作時間内每半小時

(6)0 0 12 ? * WED 表示每個星期三中午12點

(7)0 0 12 * * ? 每天中午12點觸發

(8)0 15 10 ? * * 每天上午10:15觸發

(9)0 15 10 * * ? 每天上午10:15觸發

(10)0 15 10 * * ? * 每天上午10:15觸發

(11)0 15 10 * * ? 2005 2005年的每天上午10:15觸發

(12)0 * 14 * * ? 在每天下午2點到下午2:59期間的每1分鐘觸發

(13)0 0/5 14 * * ? 在每天下午2點到下午2:55期間的每5分鐘觸發

(14)0 0/5 14,18 * * ? 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發

(15)0 0-5 14 * * ? 在每天下午2點到下午2:05期間的每1分鐘觸發

(16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44觸發

(17)0 15 10 ? * MON-FRI 周一至周五的上午10:15觸發

(18)0 15 10 15 * ? 每月15日上午10:15觸發

(19)0 15 10 L * ? 每月最後一日的上午10:15觸發

(20)0 15 10 ? * 6L 每月的最後一個星期五上午10:15觸發

(21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最後一個星期五上午10:15觸發

(22)0 15 10 ? * 6#3 每月的第三個星期五上午10:15觸發

三、郵件發送

  1. 導入依賴:
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
           
  1. 配置email資訊:

    application.properties

[email protected]
spring.mail.password=XXXXXX
spring.mail.host=smtp.qq.com
 #開啟密碼驗證
spring.mail.properties.mail.smtp.ssl.enable=true
           

注意:

spring.mail.password=XXXXXX

這裡的password來自QQEmail開啟POP3獲得的授權碼:

【Spring Boot】異步任務 定時任務 郵件發送一、異步任務二、定時任務三、郵件發送
【Spring Boot】異步任務 定時任務 郵件發送一、異步任務二、定時任務三、郵件發送
  1. 測試:

    在springboot提供的測試類中,JavaMailSenderImpl由我們的spring配置好的:

@SpringBootTest
class Springboot02TestApplicationTests {

    @Autowired
    JavaMailSenderImpl mailSender;


    @Test
    void contextLoads() {
        SimpleMailMessage message = new SimpleMailMessage();

        message.setSubject("[測試]:主題");//主題
        message.setText("[測試]:内容");//内容

        message.setTo("[email protected]");//給誰
        message.setFrom("[email protected]");//由誰發的

        mailSender.send(message);
    }

}
           

啟動測試類,我們就可以在我們的郵箱中收到了。

【Spring Boot】異步任務 定時任務 郵件發送一、異步任務二、定時任務三、郵件發送

複雜郵件發送:

正文加html标簽,攜帶附件…

@SpringBootTest
class Springboot02TestApplicationTests {

    @Autowired
    JavaMailSenderImpl mailSender;

    @Test
    void contextLoads2() throws MessagingException {

        //複雜郵件MimeMessage
        MimeMessage message = mailSender.createMimeMessage();

        //組裝
        MimeMessageHelper helper = new MimeMessageHelper(message, true);

        //正文:
        helper.setSubject("[測試]:主題");
        helper.setText("<p style='color:red'>[測試]:内容</p>",true);

        //附件
        helper.addAttachment("測試.docx",new File("C:\\Users\\DELLHL\\Desktop\\note.docx"));

        helper.setTo("[email protected]");//給誰
        helper.setFrom("[email protected]");//由誰發的

        mailSender.send(message);
    }

}
           
【Spring Boot】異步任務 定時任務 郵件發送一、異步任務二、定時任務三、郵件發送

繼續閱讀