Spring Boot 与 异步,定时,邮件任务

827 阅读1分钟

@Async

在某一个需要异步操作的方法头标注上@Async注解,同时在主方法头加上@EnableAsync注解来启用异步操作。

@Scheduled

在需要有定时任务的方法上加上此注解,同时在主方法头加上@EnableScheduled注解来启用异步操作。

举个🌰 :

@Scheduled(cron = "0 * * * * MON-FRI")

被上述注解标注的方法,会在周一至周五的每个0秒(整秒)的时间运行一次。

Cron表达式有6位,中间用空格隔开:

[second, minute, hour, day of month, month, day of week] 对应的scope:

[0-59, 0-59, 0-23, 1-31,1-12,0-7] 最后一个0和7都代表周日

Cron表达式中使用是per time unit的意思,例如在第二位的代表每分钟。

Cron表达式中可以使用',', '-', '/', '?'表示不同的时间间隔。以第一位(秒)为例:

  • 1, 2, 3 代表每到第1,2,3秒时,就执行一次
  • 1 - 3的效果与上述一致,代表区间内符合,即代表每到第1,2,3秒时,就执行一次
  • 0/4代表每间隔4秒执行一次
  • 用来做冲突匹配

更多参考:crontab.guru/

邮件

启动场景:spring-boot-starter-mail

用邮件时必要的相关配置:

hostname, password, host分别是发送方的用户名,密码,及发送发服务器。

发送简单邮件时(不包括附件等复杂功能),创建SimpleMailMessage实例,然后用messageObject.setSubject("主题")

messageObject.setText("内容")

messageObject.sentTo("收件人")

messageObject.sentFrom("发件人")

来构造邮件

如果邮件服务器需要建立安全通讯,可以通过配置这个参数来处理:

Spring.mail.properties.mail.smtp.ssl.enable = true

发送复杂邮件时,需要创建MimeMessage和MimeMessageHelper实例

可以做addAttachment操作。

Reference:

视频教程

Cron表达式生成器👇