简介
本文配置SpringBoot的3种任务,异步任务,定时任务,邮件任务。更多内容
异步任务
- 在主入口开启异步任务配置
@EnableAsync //开启异步注解
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
- 通过
@Async
声明一个异步任务
@Service
public class TeskService {
@Async
public void asyncService(){
System.out.println("异步任务处理数据");
}
}
定时任务
- 程序主入口开启定时任务
@EnableScheduling //开启基于注解的定时任务
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
- 配置定时任务
@Service
public class TeskService {
@Scheduled(cron="0/4 * * * * *")
public void timeService(){
System.out.println("每4秒执行一次,执行定时器了!");
}
}
- cron的表达式说明
- corn表达是由6位组成,*表示所有。
6尾数分别表示这几个时间
second(秒), minute(分), hour(时), day of month(日), month(月), day of week(周几)
-
corn表达是各个字段的允许值
|字段|允许值|允许的特殊符号|
|:----|:------|-------|
|秒 |0-59 |, - * /|
|分 |0-59 |, - * /|
|小时 |0-23| , - * /|
|日期 |1-31 |, - * ? / L W C|
|月份 |1-12| , - * /|
|星期| 0-7或SUN-SAT 0,7是SUN |, - * ? / L C #| -
特殊符号代表的含义
|符号|含义|
|----|----|
|, |枚举
|- |区间
|* |任意
|/ |步长
|? |日/星期冲突匹配
|L |最后
|W |工作日
|C |和calendar联系后计算过的值
|# |星期,4#2,第2个星期四
- 一些例子用于解释
【0 0/5 14,18 * * ?】 每天14点整,和18点整,每隔5分钟执行一次
【0 15 10 ? * 1-6】 每个月的周一至周六10:15分执行一次
【0 0 2 ? * 6L】每个月的最后一个周六凌晨2点执行一次
【0 0 2 LW * ?】每个月的最后一个工作日凌晨2点执行一次
【0 0 2-4 ? * 1#1】每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次;
【0 * * * * MON-SAT】星期一到星期6 每到整秒都执行
【0,1,2,3,4 * * * * MON-SAT】星期一到星期6 每到整0,1,2,3,4秒都执行0-4 这个同理
邮件任务
- 在pom.xml里面引入邮件启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 在配置文件里面配置相应信息
spring:
mail:
#用户名
username: 1227900499@qq.com
#这个密码不是邮箱的登录密码,需要在邮箱服务器里面去生成的授权吗,qq邮箱在qq 里面的 设置-->账户里面
password: xxxxxxx
#qq服务器是下面这个,其他的服务器需要到相应的地方去找,qq qq在QQ邮箱---->设置---账户里面去找
host: smtp.qq.com
- 事例代码
@Autowired JavaMailSenderImpl mailSender; //简单邮件测试 @Test public void sendMailTest() { SimpleMailMessage message = new SimpleMailMessage(); //设置邮件的基本信息 message.setSubject("简单邮件发送测试"); message.setText("我是测试内容"); message.setTo("325811402@qq.com"); message.setFrom("1227900499@qq.com"); mailSender.send(message); } //带文件的邮件发送测试 @Test public void sendMailTest2() throws Exception{ //1、创建一个复杂的消息邮件 MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); //邮件设置 helper.setSubject("邮件测试"); //可以加html 标签,单第二个参数要为true ,把html 标签功能开启 helper.setText("<b style='color:red'>邮件测试类容,可以加标签哦</b>,哈哈",true); helper.setTo("325811402@qq.com"); helper.setFrom("1227900499@qq.com"); //上传文件 helper.addAttachment("1.jpg",new File("C:\\Users\\Administrator.BF-20180801KGCC\\Desktop\\头像\\1.jpg")); helper.addAttachment("2.jpg",new File("C:\\Users\\Administrator.BF-20180801KGCC\\Desktop\\头像\\2.jpg")); mailSender.send(mimeMessage); }