• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

一张思维导图学会使用SpringBoot的Schedule定时发送邮件

武飞扬头像
DaenCode
帮助1

🧑‍💻作者名称:DaenCode
🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:SpringBoot实战

系列文章目录


学新通


思维导图

学新通

🌟介绍

  • 基本概念:定时任务从字面不难看出,定时任务意思就是定时处理某种任务。
  • 使用场景:比如说定时发送邮件、消息提醒等等。
  • 常见的定时任务: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小工具
学新通

@Component
public class ScheduleService {

    @Scheduled(fixedRate = 5000)
    //@Scheduled(fixedDelay = 5000)
    public void scheduleConsole(){

        System.out.println("定时任务要开始了哟!!!!");

    }
}

效果

学新通

🌟定时发送邮件

引入相关依赖

<!-- Spring Mail依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

126邮箱配置

1.开启POP3/SMTP服务
学新通
学新通
2.点击开启后,会发送短信获取授权码,注意要保存授权码只显示一次!!!!
学新通

修改项目配置文件

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定时任务的方法到此就结束啦,希望对阅读本文的你们有帮助哦。同时有疑问可以在评论区留言,谢谢大家!


学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgakfkj
系列文章
更多 icon
同类精品
更多 icon
继续加载