一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件
作者:mmseoamin日期:2023-12-18

🧑‍💻作者名称:DaenCode

🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。

😎人生感悟:尝尽人生百味,方知世间冷暖。

📖所属专栏:SpringBoot实战

系列文章目录

标题
一文带你学会使用SpringBoot+Avue实现短信通知功能(含重要文件代码)
一张思维导图带你学会Springboot创建全局异常、自定义异常
一张思维导图带你打通SpringBoot自定义拦截器的思路
28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈
一张思维导图带你学会SpringBoot、Vue前后端分离项目线上部署

一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件,在这里插入图片描述,第1张


文章目录

  • 系列文章目录
  • 思维导图
  • 🌟介绍
  • 🌟必不可少的注解
  • 🌟入门案例
    • 启动类添加@EnableScheduling
    • 定义定时任务类
    • 效果
    • 🌟定时发送邮件
      • 引入相关依赖
      • 126邮箱配置
      • 修改项目配置文件
      • 编写定时任务方法
      • 最终效果
      • 🌟写在最后

        思维导图

        一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件,在这里插入图片描述,第2张

        🌟介绍

        • 基本概念:定时任务从字面不难看出,定时任务意思就是定时处理某种任务。
        • 使用场景:比如说定时发送邮件、消息提醒等等。
        • 常见的定时任务:Java.util.TImer、Quartz2、SpringBoot中的Schedule。

          本文的主要内容以springboot中的Schedule为例,来带大家看看如何使用其做定时任务。

          🌟必不可少的注解

          @EnableScheduling:用于标识启动类开启定时任务。

          @Component:用于标识定时任务类,让Spring扫描其为组件。

          @Scheduled:用户标识在定时任务方法上,配置定时的规则。

          🌟入门案例

          启动类添加@EnableScheduling

          启动类添加@EnableScheduling负责开启定时任务功能。

          @SpringBootApplication
          @MapperScan("com.shoanjen.redis.mapper")
          @EnableScheduling
          public class RedisApplication {
          	public static void main(String[] args) {
          		SpringApplication.run(RedisApplication.class, args);
          	}
          }
          

          定义定时任务类

          • 定义定时任务类,并标注@Component注解。
          • 定义定时任务方法并标识@Schduled注解,每隔5秒在控制台输出日志。其中@Schedule参数如下
            参数描述
            cron指定一个Cron表达式,用于精确控制任务的执行时间
            zone指定用于解析Cron表达式的时区,默认为服务器的默认时区
            fixedDelay指定任务结束后的延迟时间(毫秒),用于控制下一次任务执行的间隔
            fixedDelayString与fixedDelay类似,但可以使用字符串表示延迟时间
            fixedRate指定任务开始执行后的间隔时间(毫秒),用于控制连续任务之间的间隔
            fixedRateString与fixedRate类似,但可以使用字符串表示间隔时间
            initialDelay指定任务首次执行前的延迟时间(毫秒)
            initialDelayString与initialDelay类似,但可以使用字符串表示延迟时间

            有关于Cron表达式的配置可以参考此网址:Cron小工具

            一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件,在这里插入图片描述,第3张

            @Component
            public class ScheduleService {
                @Scheduled(fixedRate = 5000)
                //@Scheduled(fixedDelay = 5000)
                public void scheduleConsole(){
                    System.out.println("定时任务要开始了哟!!!!");
                }
            }
            

            效果

            一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件,在这里插入图片描述,第4张

            🌟定时发送邮件

            引入相关依赖

            
            
                org.springframework.boot
                spring-boot-starter-mail
            
            

            126邮箱配置

            1.开启POP3/SMTP服务

            一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件,在这里插入图片描述,第5张

            一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件,在这里插入图片描述,第6张

            2.点击开启后,会发送短信获取授权码,注意要保存授权码只显示一次!!!!

            一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件,在这里插入图片描述,第7张

            修改项目配置文件

            spring.mail.host=smtp.126.com
            spring.mail.username=XXXXXX@126.com
            spring.mail.password=这里就是你刚刚的授权码哟!
            

            编写定时任务方法

            在这里就举一个简单的发送验证码例子来进行演示。下方类中的定时任务方法用来每天21:34定时向邮件发送验证码的功能。

            @Component
            public class ScheduleService {
                @Autowired
                private JavaMailSender mailSender;
                @Scheduled(cron = "0 34 21 * * ?")
                public void scheduleMailTo(){
                    SimpleMailMessage message = new SimpleMailMessage();
                    //随机验证码
                    Random random=new Random();
                    int code=random.nextInt(9999)+1;
                    // 发件人,配置文件中的邮件地址
                    message.setFrom("xxxxx@126.com");
                    // 收件人
                    message.setTo("xxxxx@163.com");
                    //设置邮件标题
                    message.setSubject("注册验证码");
                    // 邮件内容
                    message.setText("Hello欢迎使用xxx系统,您的注册验证码为"+code);
                    mailSender.send(message);
                    System.out.println("邮件发送已完成哦!!!");
                }
            }
            

            最终效果

            最终效果请查看红框!

            一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件,在这里插入图片描述,第8张

            🌟写在最后

            有关于SpringBoot中Schedule定时任务的方法到此就结束啦,希望对阅读本文的你们有帮助哦。同时有疑问可以在评论区留言,谢谢大家!


            一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件,请添加图片描述,第9张