javascript
SpringBoot整合定时任务和Emil发送
SpringBoot整合定時任務(wù)和Emil發(fā)送
定時任務(wù)
? 任務(wù)系統(tǒng)指的是定時任務(wù)。定時任務(wù)是企業(yè)級開發(fā)中必不可少的組成部分,諸如長周期業(yè)務(wù)數(shù)據(jù)的計算,例如年度報表,諸如系統(tǒng)臟數(shù)據(jù)的處理,再比如系統(tǒng)性能監(jiān)控報告,還有搶購類活動的商品上架,這些都離不開定時任務(wù)。在SpringBoot中使用定時任務(wù)十分簡單,按照以往的經(jīng)驗,SpringBoot整合其它技術(shù)大致可分為三步:
- 導(dǎo)坐標(biāo)
- 寫配置
- 調(diào)接口
在pom.xml中導(dǎo)入對應(yīng)坐標(biāo)
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>?
在application.yml中寫配置
spring:task:scheduling:pool:size: 1 # 任務(wù)調(diào)度線程池大小 默認(rèn) 1thread-name-prefix: ssm_ # 調(diào)度線程名稱前綴 默認(rèn) scheduling- shutdown:await-termination: false # 線程池關(guān)閉時等待所有任務(wù)完成await-termination-period: 10s # 調(diào)度線程關(guān)閉前最大等待時間,確保最后一定關(guān)閉這些配置根據(jù)自己的需求設(shè)置
在啟動類上使用@EnableScheduling注解打開定時任務(wù)開關(guān)
@SpringBootApplication //開啟定時任務(wù) @EnableScheduling public class Springboot18TaskApplication {public static void main(String[] args) {SpringApplication.run(Springboot18TaskApplication.class, args);}}在需要開啟定時任務(wù)的方法上添加@Scheduled注解并設(shè)置cron表達式
@Component public class MyTask {@Scheduled(cron = "0/1 * * * * ?")public void run(){System.out.println(Thread.currentThread().getName()+"這是一個定時任務(wù)");} }這里設(shè)置的cron代表每秒執(zhí)行一次
測試結(jié)果
郵箱
? 發(fā)郵件是java程序的基本操作,springboot整合javamail其實就是簡化開發(fā)學(xué)習(xí)郵件發(fā)送之前先了解3個概念,這些概念規(guī)范了郵件操作過程中的標(biāo)準(zhǔn)。
- SMTP(Simple Mail Transfer Protocol):簡單郵件傳輸協(xié)議,用于發(fā)送電子郵件的傳輸協(xié)議
- POP3(Post Office Protocol - Version 3):用于接收電子郵件的標(biāo)準(zhǔn)協(xié)議
- IMAP(Internet Mail Access Protocol):互聯(lián)網(wǎng)消息協(xié)議,是POP3的替代協(xié)議發(fā)郵件是java程序的基本操作,springboot整合javamail其實就是簡化開發(fā)。
下面演示一下發(fā)郵件的過程
在pom.xml中導(dǎo)入坐標(biāo)
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>在applicat.yml中寫配置
spring:mail:host: smtp.qq.comusername: ***********@qq.compassword: 從你郵箱中獲取host:配置的是提供郵件服務(wù)的主機協(xié)議,當(dāng)前程序僅用于發(fā)送郵件,因此配置的是smtp的協(xié)議。例如使用163郵箱就換成:host:smtp:163.com
username:你發(fā)送郵箱的郵箱名
password:這個不是你郵箱密碼,而是你郵箱開啟smtp時給你的密碼
獲取郵箱password
拿QQ郵箱舉例子,在郵箱—設(shè)置—賬戶中開啟POP3/SMTP服務(wù)即可獲取
編寫service接口及其實現(xiàn)類
發(fā)送普通郵箱
public interface SendEmil {public void sendemil();//發(fā)送普通郵箱public void sendemilX();//發(fā)送多組件郵箱 } public class SendEmilImpl implements SendEmil {@Autowiredprivate JavaMailSender javaMailSender;private String from ="test@qq.com";//發(fā)送人的郵箱private String to = "test@qq.com";//接收人的郵箱private String subject = "測試郵件";//郵箱標(biāo)題private String context = "測試郵件內(nèi)容";//郵箱正文@Overridepublic void sendemil() {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from+"(別名)");message.setTo(to);message.setSubject(subject);message.setText(context);javaMailSender.send(message);}發(fā)送郵件是使用JavaMailSender類的send方法,而郵件主體是通過SimpleMailMessage對象來進行封裝
發(fā)送多組件郵箱:包含圖片,附件等
發(fā)送簡單郵件僅需要提供對應(yīng)的4個基本信息就可以了,如果想發(fā)送復(fù)雜的郵件,需要更換郵件對象。使用MimeMessage可以發(fā)送特殊的郵件。
@Overridepublic void sendemilX() {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);//開啟添加附件helper.setFrom(from + "(別名)");helper.setTo(to);helper.setSubject(subject);helper.setText(context, true);//添加附件File f1 = new File("這里選擇附件的地址");helper.addAttachment(f1.getName(),f1);//添加附件javaMailSender.send(mimeMessage);} catch (MessagingException e) {e.printStackTrace();}}這里的MimeMessage對象是由javaMailSender的createMimeMessage創(chuàng)建
總結(jié)
以上是生活随笔為你收集整理的SpringBoot整合定时任务和Emil发送的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html中text的maxlength,
- 下一篇: java 中的哈希码