Home >Java >javaTutorial >How to integrate scheduled tasks and email tasks in SpringBoot

How to integrate scheduled tasks and email tasks in SpringBoot

PHPz
PHPzforward
2023-05-23 09:16:05710browse

定时任务

项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息。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触发

测试

@Service
public class task {


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

邮件任务

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

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

定义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

测试邮件发送

    @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);
    }

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!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete