簡單的實現,在作具體業務時具體分析html
1.在springboot的啓動類上加java
2.在業務層實現異步的具體方法,spring
結束~,一個簡單的異步任務demo實現啦~springboot
1,導入依賴併發
<!--郵件任務依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2.在peoperties或yaml配置郵件任務驅動的相關信息異步
注意:拿qq郵件舉例,在寫代碼前需取本身的qq郵箱開通smtp服務spring-boot
spring.mail.username=3342239623@qq.com
spring.mail.password=zxmutdmcxrmgdafj
spring.mail.host=smtp.qq.com
#開啓加密驗證,只有qq的郵箱必須開啓ssl,其餘大廠郵箱不須要
spring.mail.properties.mail.smtp.ssl.enable=true
3.郵件任務簡單的實現高併發
3.1簡單郵件發送的實現工具
class Springboot09TestApplicationTests { @Autowired JavaMailSender mailSender; @Test void contextLoads() { //一個簡單的郵件任務測試 SimpleMailMessage mailMessage=new SimpleMailMessage(); mailMessage.setSubject("帥哥,您好"); mailMessage.setText("勵志作一個java全乾工程師,來自另外一個帥哥給您發送的郵件"); mailMessage.setTo("xxxxx@qq.com"); mailMessage.setFrom("xxxxx@qq.com"); mailSender.send(mailMessage); }
3.2複雜郵件格式信息發送實現測試
能夠自定義發送文本格式(圖片視頻),也能夠設置樣式
@Test void contextLoads2() throws MessagingException { //一個複雜的郵件任務測試 MimeMessage mimeMessage = mailSender.createMimeMessage(); //組裝 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); //正文 helper.setSubject("帥哥,您好"); helper.setText("<h1 style='color:red'>您有一張圖片請查收</h1>",true); //附件 helper.addAttachment("1.jpg",new File("相對路徑or絕對路徑")); helper.setTo("xxxxxx@qq.com"); helper.setFrom("xxxxxx@qq.com"); mailSender.send(mimeMessage); }
擴展:郵件任務是業務開發中比較常見的,因此能夠將他封裝成一個工具類,以便於之後的使用
簡單的郵件任務工具類
/** * * @param html * @param subject * @throws MessagingException * @Author king~ */ //自定義封裝成一個工具類 public void sedMail(Boolean html,String subject) throws MessagingException { //一個複雜的郵件任務測試 MimeMessage mimeMessage = mailSender.createMimeMessage(); //組裝 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,html); //正文 helper.setSubject(subject); helper.setText("<h1 style='color:red'>您有一張圖片請查收</h1>",true); //附件 helper.addAttachment("1.jpg",new File("相對路徑or絕對路徑"));
helper.setTo("xxxxx@qq.com"); helper.setFrom("xxxx3@qq.com"); mailSender.send(mimeMessage); }
說明:最先是Timer,相信你們都已經很是熟悉 java.util.Timer 了,它是最簡單的一種實現任務調度的方法
特色:in JDK,簡潔,單線程
可是由於他是單線程因此它是串行的,因此不能知足當前盛行的高併發的需求開發
所以出現了ScheduledExecutor;
此篇實現的就是基於ScheduledExecutor的;
相關注解:
實現:
1.在啓動類標註 @EnableScheduling //開啓定時任務
2.在業務層的定時任務相關方法上標註註解 @Scheduled(cron="0/2 * * * * ?") //表示何時執行
實現一個小demo,
功能:每兩秒給特定郵箱發送垃圾郵件!實現郵件轟炸!
提示:請不要將合法手段用到不正當的地方
@Service public class ScheduledService { @Autowired JavaMailSender mailSender; //在一個固定的時間執行這個方法~ Timer //corn表達式! //格式:秒,分,時,日,月,周幾~ 有在線生成工具 /* * 例子:30 15 10 * * ? 天天的10點15分30秒調度(執行)一次 * 30 0/5 10,18 * * ? 天天的18點和10點的30秒處,每隔5分鐘執行一次 * 0 15 10 ? * 1-6 週一至週六的10.15分鐘執行一次 * */ @Scheduled(cron="0/2 * * * * ?") public void hello(){ //一個簡單的郵件任務測試 SimpleMailMessage mailMessage=new SimpleMailMessage(); mailMessage.setSubject("帥哥,您好"); mailMessage.setText("我是郵件轟炸機,您已被擊中"); mailMessage.setTo("xxxxxxx@qq.com"); mailMessage.setFrom(xxxxxx@qq.com"); mailSender.send(mailMessage); System.out.println("hello,你被執行了~"); } }