Home > Java > javaTutorial > body text

How to integrate scheduled tasks and email tasks in SpringBoot

PHPz
Release: 2023-05-23 09:16:05
forward
674 people have browsed it

定时任务

项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息。Spring为我们提供了异步执行任务调度的方式

提供 :

  • TaskExecutor 任务调度这

  • TaskScheduler 任务执行者 两个注解:

  • @EnableScheduling// 开启定时任务功能

@Scheduled //表示什么时候执行

cron表达式:

字段 允许值 允许的特殊字符
秒 0-59 - * /
分 0-59 - * /
小时 0-23 - * /
日期 1-12或JAN-DEC - * ? / L W C 月份 0-59 - * /
星期 1-7或SUN-SAT - * ? / L C #

cron表达式例子:

  (0)0/20 * * * * ?   表示每20秒 调整任务

  (1)0 0 2 1 * ?   表示在每月的1日的凌晨2点调整任务

  (2)0 15 10 ? * MON-FRI   表示周一到周五每天上午10:15执行作业

  (3)0 15 10 ? 6L 2002-2006   表示2002-2006年的每个月的最后一个星期五上午10:15执行作

  (4)0 0 10,14,16 * * ?   每天上午10点,下午2点,4点 

  (5)0 0/30 9-17 * * ?   朝九晚五工作时间内每半小时 

  (6)0 0 12 ? * WED    表示每个星期三中午12点 

  (7)0 0 12 * * ?   每天中午12点触发 

  (8)0 15 10 ? * *    每天上午10:15触发 

  (9)0 15 10 * * ?     每天上午10:15触发 

  (10)0 15 10 * * ? *    每天上午10:15触发 

  (11)0 15 10 * * ? 2005    2005年的每天上午10:15触发 

  (12)0 * 14 * * ?     在每天下午2点到下午2:59期间的每1分钟触发 

  (13)0 0/5 14 * * ?    在每天下午2点到下午2:55期间的每5分钟触发 

  (14)0 0/5 14,18 * * ?     在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 

  (15)0 0-5 14 * * ?    在每天下午2点到下午2:05期间的每1分钟触发 

  (16)0 10,44 14 ? 3 WED    每年三月的星期三的下午2:10和2:44触发 

  (17)0 15 10 ? * MON-FRI    周一至周五的上午10:15触发 

  (18)0 15 10 15 * ?    每月15日上午10:15触发 

  (19)0 15 10 L * ?    每月最后一日的上午10:15触发 

  (20)0 15 10 ? * 6L    每月的最后一个星期五上午10:15触发 

  (21)0 15 10 ? * 6L 2002-2005   2002年至2005年的每月的最后一个星期五上午10:15触发 

  (22)0 15 10 ? * 6#3   每月的第三个星期五上午10:15触发
Copy after login

测试

@Service
public class task {


    // 秒  分 时 日 月 周几
    @Scheduled(cron = "0 17 18 * * ?")
    public void test(){
        System.out.println("这个是定时任务,现在的时间是:"+new Date());
    }
}
Copy after login

邮件任务

邮件发送需要引入spring-boot-starter-mail

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
Copy after login

定义MailProperties内容,配置在application.yml中

spring.mail.username=wangmeng@XXX.com
spring.mail.password=EXHFOVQXOTZUKWSL
spring.mail.host=smtp.163.com


#开启加密验证
spring.mail.properties.mail.smtp.ssl.enable=true
Copy after login

测试邮件发送

    @Autowired
    private JavaMailSenderImpl javaMailSender;
    @Test
    void contextLoads() {
        SimpleMailMessage simpleMailMessage=new SimpleMailMessage();

        simpleMailMessage.setSubject("这是SpringBoot集成mail,发送的第一个邮件");

        simpleMailMessage.setText("你好,你好,你好,你好!");
        simpleMailMessage.setTo("mengwangq@XXXX.com","jhwucc@XXX.com");
        simpleMailMessage.setFrom("wangmeng@XXX.com");

        javaMailSender.send(simpleMailMessage);
    }

    @Test
    void Test() throws Exception {
        MimeMessage mimeMessage =
                javaMailSender.createMimeMessage();
        MimeMessageHelper helperMessage = new MimeMessageHelper(mimeMessage, true,"utf-8");
        helperMessage.setSubject("今日工作进展");
        helperMessage.setText("<p style=&#39;color:red&#39;>今日工作汇报,详情请查看附件</p>");

        // 附件
        helperMessage.addAttachment("今日工作进展.docx", new File("D:\\usr\\local\\工作日报.docx"));



        helperMessage.setTo("mengwangq@XXXX.com");
        helperMessage.setFrom("wangmeng@XXXXX.com");


        javaMailSender.send(mimeMessage);
    }
Copy after login

The above is the detailed content of How to integrate scheduled tasks and email tasks in SpringBoot. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template