天天看點

Springboot異步任務、定時任務和郵件發送

1、異步任務

啟動類上加上支援異步任務注解

@EnableAsync           // 開啟異步注解功能
@SpringBootApplication
public class Springboot09AsynEmailTaskApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot09AsynEmailTaskApplication.class, args);
    }

}
           

編寫異步任務代碼

@Service
public class AsynService {

    @Async
    public void asynTake() throws InterruptedException {
        System.out.println("任務正在執行中...");
        Thread.sleep(5000);
        System.out.println("任務執行完畢!");
    }

}
           

測試:

@RestController
public class AsynController {

    @Autowired
    AsynService asynService;

    @RequestMapping("/hello")
    public String hello() throws InterruptedException {
        asynService.asynTake();
        return "任務執行完畢!";

    }

}
           
2、定時發送

啟動類上加上支援定時任務注解

@EnableScheduling      // 開啟定時任務注解功能
@SpringBootApplication
public class Springboot09AsynEmailTaskApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot09AsynEmailTaskApplication.class, args);
    }

}
           

測試

@Service
public class ScheduledService {

    /* cron表達式
     * 秒 分 時 日 月 周幾
     * 每秒執行一次 cron = "0/1 * * * * ?"
     */
    @Scheduled(cron = "0/10 * * * * ?")
    public void scheduledTest() {
        System.out.println("喵,你被執行了~");
    }

}
           
3、郵件發送

導入jar

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

在springboot配置檔案中加上郵件伺服器具體資訊

spring:
  # 配置郵箱伺服器資訊
  mail:
    username: [email protected]
    password: yxtkamoezospdgje
    host: smtp.qq.com
           

測試

@SpringBootTest
class Springboot09AsynEmailTaskApplicationTests {

    @Autowired
    JavaMailSenderImpl mailSender;


        // 發送一個簡單的郵件
    @Test
    void contextLoads() {
    
        SimpleMailMessage mailMessage = new SimpleMailMessage();

        // 标題
        mailMessage.setSubject("你好呀!");
        // 内容
        mailMessage.setText("謝謝你的幫助");

        mailMessage.setTo("[email protected]");
        mailMessage.setFrom("[email protected]");

        mailSender.send(mailMessage);

    }
    
	// 發送一個帶附件的郵件
    @Test
    void contextLoads2() throws MessagingException {

        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);

        // 标題
        helper.setSubject("你好呀!");
        // 内容
        helper.setText("你想要的圖檔都在附件裡。");

        // 附件
        helper.addAttachment("kda阿卡麗.jpg", new File("C:\\Users\\27232\\Pictures\\KDA\\kda阿卡麗.jpg"));
        helper.addAttachment("卡莎.jpg", new File("C:\\Users\\27232\\Pictures\\KDA\\虛空之女 KDA ALL OUT.jpg"));

        // 接收人
        helper.setTo("[email protected]");
        // 發送人
        helper.setFrom("[email protected]");

        mailSender.send(mimeMessage);

    }

}
           

繼續閱讀