Spring Boot2(十三):整合定时任务发送邮件 (2)

定时任务在SpringBoot默认的SpringBootStart包中已经存在

启动类开启定时任务 @SpringBootApplication @EnableScheduling public class ScheduleMailApplication { public static void main(String[] args) { SpringApplication.run(ScheduleMailApplication.class, args); } } 创建定时任务 @Component public class SchedulerTask { private int count=0; @Scheduled(cron="*/8 * * * * ?") private void process(){ System.out.println("定时任务开启,以跑: "+(count++)); } } Quart Cron表达式扩展

cron的表达式是字符串,实际上是由七子表达式,描述个别细节的时间表。

Seconds

Minutes

Hours

Day-of-Month

Month

Day-of-Week

Year (可选字段)

​ 1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。

​ 字段名 允许的值 允许的特殊字符

​ 秒 0-59 , - * /

​ 分 0-59 , - * /

​ 小时 0-23 , - * /

​ 日 1-31 , - * ? / L W C

​ 月 1-12 or JAN-DEC , - * /

​ 周几 1-7 or SUN-SAT , - * ? / L C #

​ 年 (可选字段) empty, 1970-2099 , - * /

​ “*” 代表整个时间段

​ “?”字符:表示不确定的值

​ “,”字符:指定数个值

​ “-”字符:指定一个值的范围

​ “/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m

​ “L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

​ “W”字符:指定离给定日期最近的工作日(周一到周五)

​ “#”字符:表示该月第几个周X。6#3表示该月第3个周五

​ 2)Cron表达式范例:

​ 每隔5秒执行一次:*/5 * * * * ?

​ 每隔1分钟执行一次:0 */1 * * * ?

​ 每天23点执行一次:0 0 23 * * ?

​ 每天凌晨1点执行一次:0 0 1 * * ?

​ 每月1号凌晨1点执行一次:0 0 1 1 * ?

​ 每月最后一天23点执行一次:0 0 23 L * ?

​ 每周星期天凌晨1点实行一次:0 0 1 ? * L

​ 在26分、29分、33分执行一次:0 26,29,33 * * * ?

​ 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

Corn表达式在线验证:

img

五、定时发送邮件

定时1分钟发送邮件

SchedulerTask @Component public class SchedulerTask { private int count=0; @Autowired private MailService mailService; @Autowired private TemplateEngine templateEngine; /** * 每隔一分钟执行一次 */ @Scheduled(cron="0 */1 * * * ?") private void process(){ System.out.println("this is scheduler task runing "+(count++)); //创建邮件字段 Context context = new Context(); context.setVariable("siteTitle", "鸟不拉屎"); context.setVariable("permalink", "https://niaobulashi.com/archives/canteen.html/comment-page-1#comment-1152"); context.setVariable("title", "公司食堂伙食看起来还不错的亚子(体重有所回升)"); context.setVariable("author", "测试员"); context.setVariable("time", "2019-07-16 08:52:46"); context.setVariable("text", "真的很不错!"); context.setVariable("ip", "127.0.0.1"); context.setVariable("mail", "123321@qq.com"); context.setVariable("status", "通过"); context.setVariable("manage", "https://niaobulashi.com"); // 将字段加载到页面模板中 String emailContent = templateEngine.process("sendMail", context); // 添加附件 String filePath="E:\\workspace\\javaWorkspace\\spring-boot-learning\\spring-boot-21-schedule-mail\\doc\\test.log"; mailService.sendHtmlMail("hulang6666@qq.com","主题:这是模板邮件",emailContent, filePath); } } 测试

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwyxg.html