异步任务

引入
  在实际应用中,常常会使用到异步任务。比如发送邮件的时候,后台需要一段时间去发送,而前台这边需要等后台响应结束后才能进行下一步,这种问题一般使用多线程就能解决。
  开启异步任务的注解为@EnableAsync 使用的注解为@Async

package com.song.AsyncService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;@Service
@Async
public class AsyncService {public void hello (){try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("数据正在处理中.......");}
}

当我们执行这个hello方法的时候他会使得下一步延迟3秒运行。比如:

import com.song.AsyncService.AsyncService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class AsyncController {@AutowiredAsyncService asyncService;@RequestMapping("/hello")public String hello() {//延时三秒asyncService.hello();return "OK";}
}

当我启动项目在浏览器输入localhost:8080的时候他会延迟3秒之后再return "OK"

邮件任务

邮件任务其实挺有意思的,想做的话自己可以做一个简单的邮箱。

  • 首先,要想实现这个功能必须先引入maven依赖
        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>
  • 开启邮箱服务(在你的邮箱设置–>账户里面),获取给你的密码

  • 配置:

spring.mail.username=2214011069@qq.com
spring.mail.password=写你刚才获取的密码
spring.mail.host=smtp.qq.com
# qq需要配置ssl
spring.mail.properties.mail.smtp.ssl.enable=true

然后我们需要里面的一个类 JavaMailSenderImpl 这个类是实现了JavaMailSender类,我们一直往下点进去看 JavaMailSender是继承了MailSender 这个接口


这里总共有两个方法,看注解可以看出,一个只是单纯发送一个简单的邮件,而另一个是发送复杂的邮件。下面是我的实现代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;@Service
public class MailService {@AutowiredJavaMailSenderImpl mailSender;/*** 简单的邮件发送*/public  void SendSimpleMail(String Subject, String text, String toQQ, String fromQQ) {SimpleMailMessage message = new SimpleMailMessage();message.setSubject(Subject);message.setText(text);message.setTo(toQQ+"@qq.com");message.setFrom(fromQQ+"@qq.com");mailSender.send(message);}/*** 复杂的邮件发送** @throws MessagingException*/public void SendMimeMail(String Subject, File file, String text, String toQQ, String fromQQ) throws MessagingException {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setSubject(Subject);helper.setText(text, true);//发送附件helper.addAttachment(file.getName(), file);helper.setTo(toQQ+"@qq.com");helper.setFrom(fromQQ+"@qq.com");mailSender.send(message);}}

注意:不能频繁的给别人发邮件,这样qq邮箱会被封。

定时任务

定时任务就是你指定个时间去运行你的代码,
首先开启注解定时功能@EnableScheduling 然后就可以在方法上面使用

package com.song.AsyncService;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import java.io.File;@Service
public class SchedulingService {@AutowiredMailService mailService;//秒   分   时     日   月   周几//0 * * * * MON-FRI@Scheduled(cron = "0 57 15 * * *")public void test() throws MessagingException {mailService.SendMimeMail("憨憨接收",new File("C:\\Users\\ASUS\\Desktop\\1.jpg"),"你是憨憨","1421073473","2214011069");System.out.println("执行成功!");}
}

这里我就是将定时任务和邮件任务结合在一起了,然后我可以实现每天早上6:00给XXX发“早安”。这是corn在线生成器的链接https://cron.qqe2.com/可以在这里设置你想设置的时间。

三种任务(异步任务、邮件任务、定时任务)相关推荐

  1. java如何实现定时任务_Java定时任务的三种实现方式

    前言 现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务的定时调度与执行也是对程序的基本要求了. 很多业务需求的实现都离不开定时任务,例如,每月一号,移动将清 ...

  2. SpringBoot三种方式实现定时任务

    SpringBoot三种方式实现定时任务 定时任务实现的三种方式: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用 ...

  3. java 异步事件_处理异步事件的三种方式

    在网站开发中,异步事件是项目必然需要处理的一个环节,也因为前端框架的兴起,通过框架实现的 SPA 已经是快速建构网站的标配了,一部获取数据也就成了不可或缺的一环:本文来就讲一讲 JavaScript ...

  4. 学习笔记 --- 编码过程中常见的三种异步方式

    实际的编码过程中, 凡是涉及到网络通信的代码, 异步都是决不可缺少的. 那么什么是异步呢? 异步就是子线程, 异步通过开辟子线程来实现, 所以一提到异步就应该想到子线程. 即使不涉及网络通信, 异步也 ...

  5. java同步异步调用_详解java 三种调用机制(同步、回调、异步)

    1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消 ...

  6. 异步加载js的三种方法

    js加载时间线 : 它是根据js出生的那一刻开始记录的一系列浏览器按照顺序做的事,形容的就是加载顺序,可以用来优化什么东西,理论基础,背下来. 1.创建Document对象,开始解析web页面.解析H ...

  7. python实现定时任务的方式_Python实现定时执行任务的三种方式简单示例

    本文实例讲述了Python实现定时执行任务的三种方式.分享给大家供大家参考,具体如下: 1.定时任务代码 #!/user/bin/env python # @Time :2018/6/7 16:31 ...

  8. java se 定时任务_Java实现定时任务的三种方法

    一.Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承o ...

  9. .NET三种异步模式(APM、EAP、TAP)

    APM模式: .net 1.0时期就提出的一种异步模式,并且基于IAsyncResult接口实现BeginXXX和EndXXX类似的方法. .net中有很多类实现了该模式(比如HttpWebReque ...

  10. MySQL 8.0 异步复制的三种方式

    本实验中分别针对空库.脱机.联机三种方式,配置一主两从的mysql标准异步复制.只做整服务器级别的复制,不考虑对个别库表或使用过滤复制的情况. 实验环境 [root@slave2 ~]# cat /e ...

最新文章

  1. Python数据挖掘:数据探索,数据清洗,异常值处理
  2. 清华大学朱军:发展安全可靠的AI,为什么依旧任重道远?
  3. java的HttpClient如何去支持无证书访问https
  4. 神策数据荣获“年度最具影响力大数据服务厂商”奖项
  5. android 定位修改坐标系_数控编程G52局部坐标系的建立及使用
  6. 绝地求生6月28日服务器维护,绝地求生6月28日更新到几点 吃鸡6月28日更新内容一览...
  7. 360浏览器自定义切核功能
  8. 产品经理之市场需求分析详解(非原创)
  9. 先来先服务算法、运行时间最短者优先算法和最高响应比优先调度算法_Linux进程调度:完全公平调度器CFS
  10. RDP协议详细解析(二)
  11. Mac效率:配置Alfred web search
  12. 发那科机器人tp文件转成文本_fanuc_机器人中文简易教材.pdf
  13. android xutils3 jar,Android全能开源项目xUtils3开发教程、简单封装
  14. 怎样一次删除许多WPS word中的文本框(及其内容)?简单方法
  15. 国土档案管理信息系统【档案查借阅登记】
  16. 反催收下沉社区,打通丰巢取件码
  17. 人工消雾的方法有哪些?
  18. jupyter能debug了,使用vscode的jupyter插件进行debug
  19. Freetype的使用
  20. NLP系列(4)_朴素贝叶斯实战与进阶

热门文章

  1. 趣图:大前端解放全世界指日可待
  2. 科学家揭示阿加迪尔海底滑坡的形成时间和动力学过程
  3. GTS DefaultPermissionGrantPolicyTest测试失败原因分析
  4. Web网页技术学习心得
  5. CMMI资质是什么?看完你就懂了
  6. Android 11.0 12.0Recent列表不显示某个app
  7. Arthur And The Revenge Of Maltazard[亚瑟和他的迷你王国2:玛塔扎德的复仇]
  8. 互联网商业竞争中的“狼”与“羊”
  9. matlab mean nan,为什么Matlab运行的结果是NaN呢,急盼解答
  10. CDMA网络RF优化方法