Spring boot 非同步/定時任務/郵件

yangliuhbhd發表於2018-06-11

Spring boot 非同步/定時任務/郵件:

一、非同步功能

1:啟動類新增註解:

@EnableAsync   //開啟非同步註解功能

2:方法上新增:

//告訴Spring這是一個非同步方法
@Async
public void hello(){
    try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("處理資料中...");
}

二、定時任務

1:啟動類開啟定時任務:

@EnableScheduling   

2:方法上面

/**
     * second(秒), minute(分), hour(時), day of month(日), month(月), day of week(周幾).
     * 0 * * * * MON-FRI
     *  【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點期間,每個整點都執行一次;
     */
   // @Scheduled(cron = "0 * * * * MON-SAT")
   //@Scheduled(cron = "0,1,2,3,4 * * * * MON-SAT")
   // @Scheduled(cron = "0-4 * * * * MON-SAT")
    @Scheduled(cron = "0/4 * * * * MON-SAT")  //每4秒執行一次
    public void hello(){
        System.out.println("hello ... ");
}

cron表示式:

欄位允許值允許的特殊字元
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個星期四

三、郵件任務

3.1.新增POM依賴

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>  <!--- 郵件-->
</dependency>

自動啟動類:MailSenderAutoConfiguration ,屬性配置類:MailProperties

3.2 配置檔案

spring.mail.username=#####@qq.com
spring.mail.password=123456   
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true

3.3程式碼部分

@Autowired
    JavaMailSenderImpl mailSender;

    @Test
    public void contextLoads() {
        SimpleMailMessage message = new SimpleMailMessage();
        //郵件設定
        message.setSubject("通知-今晚開會");
        message.setText("今晚7:30開會");

        message.setTo("17512080612@163.com");
        message.setFrom("534096094@qq.com");

        mailSender.send(message);
    }

    @Test
    public void test02() throws  Exception{
        //1、建立一個複雜的訊息郵件
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);

        //郵件設定
        helper.setSubject("通知-今晚開會");
        helper.setText("<b style='color:red'>今天 7:30 開會</b>",true);

        helper.setTo("17512080612@163.com");
        helper.setFrom("534096094@qq.com");

        //上傳檔案
        helper.addAttachment("1.jpg",new File("C:\\Users\\lfy\\Pictures\\Saved Pictures\\1.jpg"));
        helper.addAttachment("2.jpg",new File("C:\\Users\\lfy\\Pictures\\Saved Pictures\\2.jpg"));

        mailSender.send(mimeMessage);

    }


相關文章