SpringBoot与异步任务、定时任务、邮件任务
异步任务
- 在需要开启异步的服务加上注解:@Async
@Service
public class AsyncService {
//告诉SpringBoot这是一个异步任务,SpringBoot会自动开启一个线程去执行
@Async
public void testAsyncService(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("执行异步成功");
}
}
复制代码
- 在主配置类上添加开启异步注解功能:@EnableAsync
@EnableAsync //开启异步注解功能
public class SpringbootMybatisApplication {
复制代码
定时任务
- 在需要开启定时任务的服务上添加注解
@Scheduled(cron = "0 * * * * MON-SAT")
/* {秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}
* cron的六个符号分别对应以上时间单位,空格隔开
* * 表示所有值;
* ? 表示未说明的值,即不关心它为何值;
* - 表示一个指定的范围;
* , 表示附加一个可能值;
* / 符号前表示开始时间,符号后表示每次递增的值;
*/
@Service
public class ScheduledService {
@Scheduled(cron = "0 * * * * MON-SAT")
public void testSchedule(){
System.out.println("测试定时任务成功");
}
}
复制代码
- 在主配置类上开启定时任务注解功能:@EnableScheduling
邮件任务
- 引入邮件依赖组件
<!-- 引入邮件,如果发现注入失败,可以自行到maven官网下载jar放进对应文件夹 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
复制代码
可能会产生的错误:注入失败(可以自行到maven官网下载jar放进对应文件夹):
邮箱开启POP3/SMTP服务
在主配置文件(yml方式)中配置邮箱参数
spring:
mail:
username: yourqq@qq.com
password: xxxxxx //授权码,在服务选项中获取
host: smtp.qq.com //qq邮箱服务器
properties:
mail:
smtp:
ssl:
enable: true //开启安全连接
复制代码
- 测试邮件发送
@Autowired
JavaMailSenderImpl mailSender;
/**
* 创建简单消息邮件
*/
@Test
public void testMail(){
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("这是主题");
message.setText("这是内容");
//收件人
message.setTo("xxxxx@qq.com");
//发送人
message.setFrom("xxxxx@qq.com");
mailSender.send(message);
}
/**
* 创建复杂消息邮件
*/
@Test
public void testMail02() throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("这是复杂消息邮件主题");
helper.setText("<b style='color:red;'>这是复杂消息邮件内容</b>",true);
//添加附件1
helper.addAttachment("1.jpg",new File("E:\\desktop\\8234.jpg"));
//添加附件2
helper.addAttachment("2.docx",new File("E:\\desktop\\形势与政策课作业.docx"));
//收件人
helper.setTo("xxxx@qq.com");
//发送人
helper.setFrom("xxxxx@qq.com");
mailSender.send(mimeMessage);
}
复制代码
测试成功
作者:malizhi
链接:https://juejin.im/post/5c16687d6fb9a04a0f65141a
SpringBoot与异步任务、定时任务、邮件任务的更多相关文章
- springboot中的任务(异步任务--定时任务--邮件任务)
1.pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- 【java框架】SpringBoot(4)--SpringBoot实现异步、邮件、定时任务
1.SpringBoot整合任务机制 1.1.SpringBoot实现异步方法 日常开发中涉及很多界面与后端的交互响应,都不是同步的,基于SpringBoot为我们提供了注解方式实现异步方法.使得前端 ...
- SpringBoot使用异步线程池实现生产环境批量数据推送
前言 SpringBoot使用异步线程池: 1.编写线程池配置类,自定义一个线程池: 2.定义一个异步服务: 3.使用@Async注解指向定义的线程池: 这里以我工作中使用过的一个案例来做描述,我所在 ...
- SpringBoot中异步请求和异步调用(看这一篇就够了)
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10661591.html,否则将追究法律责任!!! 一.SpringBoot中异步请求的使用 ...
- Celery+python+redis异步执行定时任务
我之前的一篇文章中写了[Celery+django+redis异步执行任务] 博文:http://blog.csdn.net/apple9005/article/details/54236212 你会 ...
- 日夕如是寒暑不间,基于Python3+Tornado6+APScheduler/Celery打造并发异步动态定时任务轮询服务
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_220 定时任务的典型落地场景在各行业中都很普遍,比如支付系统中,支付过程中因为网络或者其他因素导致出现掉单.卡单的情况,账单变成了 ...
- Java多线程开发系列之五:Springboot 中异步请求方法的使用
Springboot 中异步线程的使用在过往的后台开发中,我们往往使用java自带的线程或线程池,来进行异步的调用.这对于效果来说没什么,甚至可以让开发人员对底层的状况更清晰,但是对于代码的易读性和可 ...
- SpringBoot 异步 定时任务 邮件
springboot异步 一: 在 MyConfiguration.java 中开启注解 @Configuration//指明当前类是一个配置类:就是来替代之前的Spring配置文件@EnableAs ...
- SpringBoot(十) 异步任务,定时任务和邮件任务
异步任务 “异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行:异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的 ...
随机推荐
- cxVerticalGrid
cxVerticalGrid can't get values procedure TForm1.Button1Click(Sender: TObject); var i: Integer; lvNa ...
- 微信小程序 功能函数 定时震动
ffn: function () { let nnn = this.data.nnn nnn += 1; this.setData({ nnn: nnn }); if (nnn > 10) { ...
- .net对Redis集群的调用(FrameWork版本4.0)
使用 StackExchange.Redis 实现.net对Redis集群的调用,方法如下: 1.打开 项目-管理NuGet程序包 2.在打开界面搜索StackExchange.Redis,找到Sta ...
- 2018 桂林ccpc现场赛 总结
Day 0 5个小时的火车,坐的昏昏欲睡.桂林站出来没有地铁,而是出租车排成长队依次上车,也算是某种意义上的地铁吧.到了酒店才发现学校那边又给我们换了,又拖着行李找新的酒店,途中路过一家餐馆,所有人都 ...
- BZOJ3270 博物馆(高斯消元+概率期望)
将两个人各自所在点视为状态,新建一个图.到达某个终点的概率等于其期望次数.那么高斯消元即可. #include<iostream> #include<cstdio> #incl ...
- Java 信号量 Semaphore 介绍
Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用.Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以 ...
- [BZOJ2288&BZOJ1150]一类堆+链表+贪心问题
今天我们来介绍一系列比较经典的堆+链表问题.这类问题的特点是用堆选取最优解,并且通过一些加减操作来实现"反悔". 在看题之前,我们先来介绍一个神器:手写堆. 手写堆的一大好处就是可 ...
- idea的protobuf使用
1.安装插件 2.添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...
- 【codeforces 765F】 Souvenirs
http://codeforces.com/problemset/problem/765/F (题目链接) 题意 给出$n$个数的序列,$m$次询问,每次查询区间$[l,r]$之间相差最小的两个数的差 ...
- 《Linux内核分析》期末总结及学习心得
[洪韶武 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ] 一.学习心得 本学 ...