当前位置: 首页 > news >正文

江苏泰州海陵区建设局网站免费网站seo排名优化

江苏泰州海陵区建设局网站,免费网站seo排名优化,虚拟主机和云服务器的区别,精装房软装设计公司🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

🎉🎉欢迎光临,终于等到你啦🎉🎉

🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀

🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 🚀

本专栏带你从Spring入门到入魔 

这是苏泽的个人主页可以看到我其他的内容哦👇👇

努力的苏泽icon-default.png?t=N7T8http://suzee.blog.csdn.net/


简介

本篇详细讲解定时任务如何构建  文末有详细的实战案例 定时发送邮件 

目录

简介

介绍

定时任务调度技术是一种用于在预定时间或间隔时间执行任务的技术。

Spring中的定时任务调度模块简介

​编辑

Spring Schedule的基本用法

Cron表达式详解

​编辑

定时任务的参数和返回值处理

处理定时任务方法的返回值:

定时任务的错误处理与异常处理:

处理定时任务方法中的异常:

定时任务的错误处理策略:

配置多个定时任务:

并发执行多个定时任务:

控制定时任务的执行顺序:

实战案例:定时发送邮箱

去QQ邮箱

开启这个服务

介绍

定时任务调度技术是一种用于在预定时间或间隔时间执行任务的技术。

它允许开发人员根据特定的时间表安排任务的执行,可以是一次性任务或周期性任务。定时任务调度技术通常用于需要定期执行的任务,例如数据备份、定时报告生成、定时数据同步等。

Spring中的定时任务调度模块简介


定时任务调度技术提供了一种方便和可靠的方式来执行重复性或定期性的任务。它可以帮助开发人员自动化一些常规的任务,减少人工干预和减轻人力负担。

Spring Schedule的基本用法

需要在项目的 Maven 依赖中添加 Spring Schedule 的相关依赖项。可以在项目的 pom.xml 文件中添加以下依赖项:

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

然后,您需要在 Spring 配置文件中启用定时任务调度功能。可以通过在配置类上添加注解 @EnableScheduling 来启用定时任务调度。

  1. 创建定时任务方法:

在您的 Spring Bean 中创建一个方法,该方法将作为定时任务的执行体。可以通过在方法上添加注解 @Scheduled 来标识该方法是一个定时任务。

@Component
public class MyTask {@Scheduled(fixedDelay = 5000) // 每隔5秒执行一次public void doTask() {// 执行任务的逻辑}
}
  1. 配置定时任务执行时间表达式:

可以使用 @Scheduled 注解的属性来配置定时任务的执行时间表达式。例如,可以使用 fixedDelay 属性来指定任务的执行间隔时间,或者使用 cron 属性来指定任务的执行时间规则。

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
@EnableScheduling
public class MyTask {// 固定延迟执行,每隔5秒执行一次@Scheduled(fixedDelay = 5000)public void fixedDelayTask() {System.out.println("Fixed delay task executed.");}// 固定频率执行,每隔3秒执行一次@Scheduled(fixedRate = 3000)public void fixedRateTask() {System.out.println("Fixed rate task executed.");}// Cron 表达式执行,每分钟的第30秒执行一次@Scheduled(cron = "30 * * * * *")public void cronTask() {System.out.println("Cron task executed.");}
}
  1. 运行定时任务:

当 Spring 应用启动时,定时任务将自动开始执行。您可以查看日志或其他输出来确认定时任务的执行情况。

定时任务的执行方式:

在 Spring Schedule 中,有几种常见的定时任务执行方式:

  • 固定延迟执行(fixedDelay):在当前任务完成后,等待一定的延迟时间后再次执行任务。
  • 固定频率执行(fixedRate):以固定的频率执行任务,不考虑任务的执行时间。
  • Cron 表达式执行:使用标准的 Cron 表达式配置任务的执行时间规则,可以实现更灵活的定时任务调度。
  • fixedDelayTask() 方法使用 @Scheduled(fixedDelay = 5000) 注解,配置了任务的执行间隔为每隔5秒执行一次。当任务执行完成后,会等待5秒再次执行。

  • fixedRateTask() 方法使用 @Scheduled(fixedRate = 3000) 注解,配置了任务的执行频率为每隔3秒执行一次。不考虑任务的执行时间,即使上一次任务还未完成,也会按照固定频率执行。

  • cronTask() 方法使用 @Scheduled(cron = "30 * * * * *") 注解,配置了任务的执行时间规则为每分钟的第30秒执行一次。使用标准的 Cron 表达式可以实现更灵活的定时任务调度。

Cron表达式详解

 

  1. 定时任务的参数和返回值处理

定时任务方法可以接受参数,并且可以有返回值。下面是对定时任务参数和返回值的处理方式的讲解:

  1. 传递参数给定时任务方法:

定时任务方法可以接受参数,您可以在方法的参数列表中声明所需的参数。例如,如果您希望定时任务方法接受一个字符串参数,可以按如下方式定义方法:

@Scheduled(fixedDelay = 5000)
public void myTask(String parameter) {// 使用接收到的参数执行任务逻辑
}

当定时任务被触发时,Spring Schedule 将自动将参数传递给定时任务方法。您可以根据需要在方法内部使用这些参数。

  1. 处理定时任务方法的返回值:

定时任务方法可以有返回值,但是返回值通常被忽略,因为定时任务的执行是异步的,没有实际的调用方来处理返回值。因此,通常情况下,定时任务方法的返回值应该为 void

定时任务的错误处理与异常处理:

在定时任务的执行过程中,可能会出现错误或异常。下面是对定时任务错误处理和异常处理的讲解:

  1. 处理定时任务方法中的异常:

如果定时任务方法中抛出了异常,Spring Schedule 将捕获这些异常并记录日志。默认情况下,异常不会向上层传播,也不会打断定时任务的执行。因此,您可以在定时任务方法中处理异常,例如进行异常日志记录或错误处理。

@Scheduled(fixedDelay = 5000)
public void myTask() {try {// 执行任务逻辑} catch (Exception e) {// 处理异常,例如记录日志或进行错误处理}
}
  1. 定时任务的错误处理策略:

如果您希望在定时任务方法抛出异常时中断任务的执行,并采取特定的错误处理策略,可以通过配置 @EnableScheduling 注解的 exceptionHandler 属性来实现。

@Configuration
@EnableScheduling(exceptionHandler = "myExceptionHandler")
public class MySchedulingConfig {@Beanpublic TaskScheduler taskScheduler() {ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();scheduler.setPoolSize(10);return scheduler;}public void myExceptionHandler(Throwable error) {// 错误处理逻辑,例如记录日志或发送通知}
}

在上述示例中,我们创建了一个名为 MySchedulingConfig 的配置类,并在其中配置了一个 TaskScheduler bean。通过在 @EnableScheduling 注解上指定 exceptionHandler 属性,将错误处理逻辑与定时任务调度器关联起来。

配置多个定时任务:

如果您需要配置多个定时任务,可以在同一个类中定义多个定时任务方法,或者创建多个带有定时任务注解的 Spring Bean。

@Component
public class MyTasks {@Scheduled(fixedDelay = 5000)public void task1() {// 执行任务1的逻辑}@Scheduled(cron = "0 0 12 * * ?")public void task2() {// 执行任务2的逻辑}
}

并发执行多个定时任务:

默认情况下,Spring Schedule 使用单个线程执行所有的定时任务。如果您需要并发执行多个定时任务,可以配置一个具有适当线程池大小的任务调度器。

@Configuration
@EnableScheduling
public class MySchedulingConfig {@Beanpublic TaskScheduler taskScheduler() {ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();scheduler.setPoolSize(10); // 设置线程池大小为10return scheduler;}
}

控制定时任务的执行顺序:

Spring Schedule 默认情况下不提供显式的控制定时任务执行顺序的方式。定时任务的执行顺序取决于任务调度器的实现和底层线程池的行为。

如果您需要在定时任务之间确保特定的执行顺序,可以考虑使用互斥或其他同步机制来实现。例如,您可以使用 synchronized 关键字或 Lock 接口来控制任务的互斥执行。

@Component
public class MyTasks {private final Object lock1 = new Object();private final Object lock2 = new Object();@Scheduled(fixedDelay = 5000)public void task1() {synchronized (lock1) {// 执行任务1的逻辑}}@Scheduled(fixedDelay = 5000)public void task2() {synchronized (lock2) {// 执行任务2的逻辑}}
}

实战案例:定时发送邮箱

首先引入依赖

dependency>groupId>org.springframework.bootgroupId>artifactId>spring-boot-starter-mailartifactId>
dependency>

去QQ邮箱

开启这个服务

自己收一下验证码 确认 就OK了

配置你的的基本配置

编写邮箱发送方法

@Component
@ConfigurationProperties(prefix = "email.config")
public class EmailUtil {@Resourceprivate StringRedisTemplate stringRedisTemplate;/*** 验证码长度*/private int codeLen=6;/*** 发送邮箱验证码的qq号*/private String qq;/*** 发送邮件的邮箱*/private String toSendEmail;/*** 发件人*/private String sender;/*** 开启IMAP/SMTP服务获取的授权码*/private String authPwd;/*** 邮件的主题*/private String title;/*** 邮件的内容*/private String content;@Scheduled(cron = "0 34 21 * * ?")public void SendEmail(String email){String authCode=RandomUtil.randomNumbers(6);stringRedisTemplate.opsForValue().set(LOGIN_CODE_KEY+email,authCode,10, TimeUnit.MINUTES);  //将验证码存入缓存,10分钟失效try {sendAuthCodeEmail(email,authCode);} catch (Exception e) {e.printStackTrace();return Result.fail("发送失败");}return Result.ok();}/*** 发送邮箱验证码* @param email* @param authCode*/public String sendAuthCodeEmail(String email, String authCode) {try {SimpleEmail mail = new SimpleEmail();mail.setHostName("smtp.qq.com");//发送邮件的服务器mail.setAuthentication(qq, authPwd);//第一个参数是发送邮箱验证码的qq号,第二个参数是开启IMAP/SMTP服务获取的授权码mail.setFrom(toSendEmail, sender);  //第一个参数是发送邮件的邮箱,第二个参数是发件人mail.setSSLOnConnect(true); //使用安全链接mail.addTo(email);//接收的邮箱mail.setSubject(title);//设置邮件的主题mail.setMsg(content + authCode);//设置邮件的内容mail.send();//发送} catch (EmailException e) {e.printStackTrace();}return ;}

最终效果 

http://www.hkea.cn/news/683266/

相关文章:

  • 用wordpress做网站百度推广管理
  • 一个空间可以放两个网站吗html模板网站
  • 做试用网站的原理网站推广优化平台
  • 软件工程培训机构学费亚马逊seo什么意思
  • 做恶搞网站软件有哪些苏州seo怎么做
  • 怎么做微信小说网站企业网络营销策划方案
  • 网站后台上传图片失败百度下载免费安装最新版
  • 镇江做网站需要多少钱企业网站模板设计
  • 西安seo优化系统网页seo
  • 如何用网站模板做网站广州网络营销推广
  • 承德手机网站建设seo推广排名
  • wordpress块引用一个网站可以优化多少关键词
  • 360网站卖东西怎么做的无锡seo优化公司
  • 邢台人民网站百度视频推广怎么收费
  • 常州天启建设公司网站高端快速建站
  • ppt模板免费下载网站不用登录seo测试工具
  • 四川建设人才网官网查询阜新网站seo
  • 太原网站开发定制百度网盘官网下载
  • 业主装修日记那个网站做的好片多多可以免费看电视剧吗
  • 租车网站建设站长之家源码
  • 昌吉州回族自治州建设局网站地产渠道12种拓客方式
  • 北京市网站公司网络项目免费的资源网
  • 电子商务网站规划、电子商务网站建设站长工具 忘忧草
  • 凡科建网关键词优化公司哪家好
  • seo排名推广工具seo公司多少钱
  • 做视频网站赚钱怎么在百度上推广自己的公司信息
  • 网站建设凡科厦门网站建设平台
  • 互联网行业pest分析福州百度快速优化排名
  • 做网站的接私活犯法吗如何对网站进行推广
  • 身高差效果图网站优化师和运营区别