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

塑胶原料东莞网站建设技术支持网站性能优化的方法有哪些

塑胶原料东莞网站建设技术支持,网站性能优化的方法有哪些,做招聘网站的怎么引流求职者,如何用自己电脑做网站文章目录 在Spring Boot中实现定时任务,主要有以下几种方式:1. 使用Scheduled注解2. 使用Quartz调度器使用Quartz调度器(更好的做法)3. 使用TaskExecutor和ScheduledExecutorService4.总结 在Spring Boot中实现定时任务,主要有以下几种方式&a…

文章目录

  • 在Spring Boot中实现定时任务,主要有以下几种方式:
    • 1. 使用@Scheduled注解
    • 2. 使用Quartz调度器
    • 使用Quartz调度器(更好的做法)
    • 3. 使用TaskExecutor和ScheduledExecutorService
    • 4.总结

在Spring Boot中实现定时任务,主要有以下几种方式:

1. 使用@Scheduled注解

这是Spring Boot中最为简便的一种方式,只需在方法上添加@Scheduled注解,并指定任务的执行计划(如Cron表达式或固定延迟/间隔)。此外,还需要在Spring Boot的主类或配置类上添加@EnableScheduling注解来启用定时任务支持。

import com.fs.service.UserService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import javax.annotation.Resource;/*** @author: jpeng* @date: 2024/9/11 11:00* @description: Task定时任务*/
@Component
public class MyTask {@Resourceprivate UserService userService;//定义需要执行的任务,每隔多少时间执行一次@Scheduled(cron = "*/2 * * * * ?")public void taskone(){System.out.println("task info...");//例子//实际中我们可以调用service层的方法进行操作}
}
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@MapperScan("com.fs.mapper")
//开启task定时任务功能
@EnableScheduling
public class MybatisPlusApplication {public static void main(String[] args) {SpringApplication.run(MybatisPlusApplication.class, args);}}

2. 使用Quartz调度器

Quartz是一个功能丰富的开源作业调度库,它提供了比Spring的@Scheduled注解更为复杂的调度选项,如作业持久化、集群支持和事务性作业。

在Spring Boot中集成Quartz,你需要添加Quartz的依赖,并配置JobDetail、Trigger和Scheduler bean。

<!-- 在pom.xml中添加Quartz依赖 -->  
<dependency>  <groupId>org.quartz-scheduler</groupId>  <artifactId>quartz</artifactId>  <version>你的Quartz版本</version>  
</dependency>

然后,定义作业类、配置Quartz调度器,并通过Java配置或XML配置来注册JobDetail和Trigger。

使用Quartz调度器(更好的做法)

更好的做法(定义作业类,只定义JobDetail和Trigger的Bean)
在这种的情况下,我们只是定义了JobDetail和Trigger的Bean,并且没有显式地创建和启动Scheduler,那么这通常是可以的,并且通常是更好的做法,特别是当我们使用Spring Boot的spring-boot-starter-quartz时。

spring-boot-starter-quartz会自动为您配置并启动Scheduler,它会查找您定义的JobDetail和Trigger的Bean,并将它们注册到Scheduler中。这样,您就不需要自己手动管理Scheduler的生命周期了。

<!--quartz定时任务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;/*** @author: jpeng* @date: 2024/9/11 10:31* @description: spring管理job* 1、定义类继承QuartzJobBean* 2、重写executeInternal来实现定时任务功能* 3、通过配置类来执行job触发器和调度器管理*/
public class MyQuarzJob extends QuartzJobBean {@Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {System.out.println("quartz task run...");}
}
import com.fs.job.MyQuarzJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author: jpeng* @date: 2024/9/11 10:33* @description: Quartz配置类*/
@Configuration
public class QuartzConfig {@Beanpublic JobDetail detail(){//绑定具体的工具Jobreturn JobBuilder.newJob(MyQuarzJob.class).storeDurably().build();}@Beanpublic Trigger jobTrigger(){//指定了调度的规则CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("*/2 * * * * ? *");//通过触发器绑定工作明细和指定触发器调度规则return TriggerBuilder.newTrigger().forJob(detail()).withSchedule(cronScheduleBuilder).build();}
}

3. 使用TaskExecutor和ScheduledExecutorService

虽然这两种方式并不直接等同于定时任务调度,但它们可以用于在Spring Boot应用中执行异步任务。TaskExecutor是Spring框架中用于执行异步任务的接口,而ScheduledExecutorService是Java并发包中提供的一个接口,用于在给定延迟后运行命令或者定期地执行命令。

@Autowired  
private TaskExecutor taskExecutor;  public void executeAsyncTask() {  taskExecutor.execute(() -> {  // 执行异步任务  });  
}  // 或者使用Java的ScheduledExecutorService  
@Bean  
public ScheduledExecutorService scheduledExecutorService() {  return Executors.newScheduledThreadPool(5);  
}  @Autowired  
private ScheduledExecutorService executorService;  public void scheduleTask() {  executorService.schedule(() -> {  // 执行定时任务  }, 1, TimeUnit.SECONDS);  
}

注意,这些方式通常用于执行异步任务,而不是严格的定时任务调度。对于定时任务调度,推荐使用@Scheduled注解或Quartz。

4.总结

在Spring Boot中,推荐使用@Scheduled注解来实现简单的定时任务调度需求,因为它配置简单且易于使用。对于需要更复杂调度功能的场景,可以考虑使用Quartz。而TaskExecutor和ScheduledExecutorService则更适合于执行异步任务

http://www.mnyf.cn/news/13926.html

相关文章:

  • 生物医药网站建设北京网络seo推广公司
  • 企业网站建设的本质及特点本地推广最好用的平台
  • 私人怎么做彩票网站平台整站seo技术
  • 移动端网站如何做开放式配外贸全网营销推广
  • 福田做商城网站建设哪家便宜百度app平台
  • 如皋做网站爱站网关键词
  • 企业网站建设立项报告市场营销策划方案范文
  • 有什么可以做试卷题目的网站搜索引擎优化的主要特征
  • 网站开发对招聘人员要求seo免费课程
  • 怎么用服务器做局域网网站百度热搜关键词排行榜
  • 泉州做网站工资正版搜索引擎优化
  • 多行业品牌企业公司网站模板报个电脑培训班要多少钱
  • 网站做销售是斤么工作杭州seo网络公司
  • wordpress淘宝主题破解西安seo外包公司
  • 电子商务网站需求分析app001推广平台官网
  • 做任务的阅币漫画网站推广怎么推
  • 做棋牌游戏网站赚钱吗seo综合查询系统
  • 如题,HTML如何将两张图片_一张放在网站顶部做背景,另一张放在尾部做背景?网站排名费用
  • 自动化科技产品网站建设拉新充场app推广平台
  • dede网站 index.php无法访问如何seo搜索引擎优化
  • 婚庆网站模板淘宝seo是什么意思啊
  • 设计师可以做兼职的网站有哪些深圳百度推广客服
  • 自己做网站需要几个软件外贸推广代理
  • 厦门关键词seo排名网站广告开户
  • 在线网站优化公司平台引流推广怎么做
  • 十进十建 网站建设工作总结推广平台哪个效果最好
  • 手表网站制作照片北京seo关键词排名优化
  • 网站设计制作ihanshi国际重大新闻
  • 网站备案有什么风险seo门户网价格是多少钱
  • 英语网站建设杭州seo优化