内容简介:spring boot中开启定时任务功能很简单,只需要两个注解就可以完成,它们分别是:@EnableScheduling 注解标注在主启动类上即可@Scheduled 标注在业务方法上
定时任务
spring boot中开启定时任务功能很简单,只需要两个注解就可以完成,它们分别是: @EnableScheduling
和 @Scheduled
@EnableScheduling 注解
@EnableScheduling 注解标注在主启动类上即可
@SpringBootApplication
@EnableScheduling
public class SpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication.class, args);
}
}
@Scheduled 注解
@Scheduled 标注在业务方法上
@Service
public class ScheduledService {
@Scheduled(cron = "0/4 * * * * SUN-MON")
public void task() {
System.out.println("业务逻辑...");
}
}
cron 表达式
表达式格式
| 表达式字段 | 字段值 | 允许特殊的字符 |
|---|---|---|
| 秒 | 0-59 | , * - / |
| 分 | 0-59 | , * - / |
| 时 | 0-24 | , * - / |
| 日期 | 1-31 | , * - / ? L W C |
| 月份 | 1-12 | , * - / |
| 星期 | 0-7或SUN-SAT,0和7都表示周日 | , * - / ? L C # |
字符说明
| 特殊字符 | 值含义 |
|---|---|
| , | 用于枚举值 |
| * | 任意 |
| - | 表示区间 |
| / | 步长 |
| ? | 日或者星期冲突匹配 |
| L | 最后 |
| W | 工作日 |
| C | 和calender联系后计算过的值 |
| # | 星期 ,4#2 : 表示第二个星期四 |
corn 表达式示例
【0 * * * * MON-FRI】 :周一到周五每分钟执行一次 【0,1,2,3,4 * * * * SUN-MON】 : 每到秒数是 0,1,2,3,4 时执行 【0/4 * * * * * 】: 0秒启动,每隔4秒执行一次 【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点期间,每个整点都执行一次;
邮件任务
spring boot对邮件发送进行了整合,只需引入相关starter即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 配置邮件发送人信息
spring:
mail:
username: bbb@qq.com
password: cybdkhhmcqclbfac #qq邮箱授权码,qq账户设置里发短信获取
host: smtp.qq.com
properties:
mail.smtp.ssl.enable: true
-
利用
org.springframework.mail.javamail.JavaMailSenderImpl进行邮件发送
public class SpringBootCacheApplicationTests {
@Autowired
private JavaMailSenderImpl sender;
/**
* 发送简单邮件
*/
@Test
public void sendMail() {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setSubject("通知");
mailMessage.setText("今晚7:00开会");
mailMessage.setTo("aaa@163.com");
mailMessage.setFrom("bbb@qq.com");
sender.send(mailMessage);
}
/**
* 发送复杂邮件
*
* @throws Exception
*/
@Test
public void sendMail2() throws Exception {
MimeMessage mimeMessage = sender.createMimeMessage();
//创建多文件邮件
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
messageHelper.setSubject("通知");
messageHelper.setText("<b style='color:red;'>今晚7:00开会</b>", true);
messageHelper.setTo("aaa@163.com");
messageHelper.setFrom("bbb@qq.com");
//添加附件
messageHelper.addAttachment("nfc.png", new File("/Users/shifeifei/Desktop/nfc.png"));
sender.send(mimeMessage);
}
}
异步方法
实际开发中,在某个方法中调用某个系统的方法,但是不关心该方法的返回结果,此时可以使用异步调用。spring boot 中只需要注解 @EnableAsync
和 @Async
@SpringBootApplication
@EnableAsync
public class SpringBootCacheApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootCacheApplication.class, args);
}
}
@Service
public class AsyncService {
@Async
public void async(){
System.out.println("----方法同步逻辑----");
System.out.println("异步逻辑");
System.out.println("----方法同步逻辑----");
}
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringBoot与异步任务、定时任务、邮件任务
- 订阅 + 定时任务重构后台主机操作任务
- 宏任务和微任务的一个小事
- Yii2 定时任务创建(Console 任务)
- Yii2 定时任务创建(Console 任务)
- 了解js运行机制——微任务与宏任务
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
移动社交时代的互动搜索营销(全彩)
萧秋水、秋叶、南方锈才 / 电子工业出版社 / 2014-8-1 / 55.00元
《移动社交时代的互动搜索营销(全彩)》跳出搜索引擎的局限,告诉读者如何利用互联网找到客户的思维。《移动社交时代的互动搜索营销(全彩)》只谈如何有效利用搜索引擎(包括移动端搜索)、电商网站、新媒体,不传播所谓的一夜暴红、一夜暴富的神话。《移动社交时代的互动搜索营销(全彩)》作者利用其丰富的实战经验,结合大量国内不同行业的实际应用案例,生动地告诉读者,怎样正确地利用搜索引擎,以很小的投资获得巨大的回报......一起来看看 《移动社交时代的互动搜索营销(全彩)》 这本书的介绍吧!