问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Spring定时任务的几种实现 附实例

发布网友 发布时间:2022-04-28 10:48

我来回答

1个回答

热心网友 时间:2023-07-14 08:15

1、Java自带的java.util.Timer类,自定义一个类继承TimerTask

例子:

public class TestTimerTask {

Timer timer;

public TestTimerTask(int a) {
timer = new Timer();
timer.schele(new GoodTimerTask(),0, 1000*a);
}

public static void main(String[] args) {
System.out.println("About to schele task.");
new TestTimerTask(3);
}

class GoodTimerTask extends TimerTask{

@Override
public void run() {
System.out.println("Timer running!");
}

}
}

2、Spring3.0以后自带的task

//一、在applicationContext.xml配置的方式
//1、准备jar包
// (1)spring核心jar包
//2、在项目中写个类
@Service
public class BookScheleTask {

@Resource
private BookService bookService;

public Page<Book> findAllBook(){ //不带参数
System.out.println("BookScheleTask.findAllBook()");
return bookService.findBook(1);
}
}
//3、在ApplicationContext.xml配置文件中写如下配置:
<!-- 自动扫描 -->
<context:component-scan base-package="com" />

<!-- spring框架的Scheled定时器 -->
<task:scheled-tasks>
<task:scheled ref="bookScheleTask" method="findAllBook" cron="0 0 12 * * ?"/>
</task:scheled-tasks>

说明:(1)<context:component-scan base-package="com" />该配置,相信大家用过spring的都知道是什么意思,
是spring用于扫描注解的
(2)<task:scheled-tasks>,该配置的作用是定义一个时间计划任务,定义某个类下面某个方法在某个时间执行。
<task:scheled ref="bookScheleTask" method="findAllBook" cron="0 0 12 * * ?"/>,ref表示的是
某个要在规定时间执行的类,method表示要执行的类下的某个方法,cron表示时间表达式,具体详细的表达式
可以百度查询
//二、基于注解的spring定时器
// 1、同上,准备好spring的jar包
// 2、在项目中创建一个类,用于执行定时任务的类。如下:
@Component("bookScheleTask")
public class BookScheleTask {

@Resource
private BookService bookService;

@Scheled(cron="0 50 14 * * ?")
public void findAllBook(){
System.out.println("BookScheleTask.findAllBook()");
bookService.findBook(1);
}
}
// 说明:基于注解的方法,@Component("bookScheleTask")表示定义了一个别名。
// @Scheled(cron="0 50 14 * * ?")表示:该注解下的方法是一个时间任务,在cron="0 50 14 * * ?"(14:50)执行findAllBook()方法

3、使用quartz

//首先我们需要定义一个任务类,比如为MyJob02 ,
//该类需要继承Job类,然后添加execute(JobExecutionContext context)方法,在
//这个方法中就是我们具体的任务执行的地方。
//由希望由调度程序执行的组件实现的接口
public class MyJob02 implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
// 执行响应的任务.
System.out.println("HelloJob.execute,"+new Date());}}

public class QuartzTest5 {
public static void main(String[] args) throws Exception {
//SchelerFactory 是一个接口,用于Scheler的创建和管理
SchelerFactory factory = new StdSchelerFactory();
//从工厂里面拿到一个scheler实例//计划表(可能翻译的不太贴切),现在我们有了要做的内容,
//与调度程序交互的主要API
/** Scheler的生命期,从SchelerFactory创建它时开始,
到Scheler调用shutdown()方法时结束;Scheler被创建后,可以增加、删除和列举Job和Trigger,
以及执行其它与调度相关的操作(如暂停Trigger)。但是,Scheler只有在调用start()方法后,
才会真正地触发trigger(即执行job)*/
Scheler scheler = factory.getScheler();
//具体任务.//用于定义作业的实例
//JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
//Trigger(即触发器) - 定义执行给定作业的计划的组件
//TriggerBuilder - 用于定义/构建触发器实例
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchele(CronScheleBuilder.cronSchele("0/1 * * * * ?")).build();
scheler.scheleJob(job, trigger);scheler.start();
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...乙肝表面抗体和乙肝核心抗体同显阳性,其余三项为阴性说明了什么... 确认劳动关系原告可以是多人吗 华为p7_l09的时间如何调整 什么地方卖毛线 如何订购毛线 顾景舟石瓢壶多少价 ...这个日期什么格式 Java 中怎么日期 转换成这样子呢如:2013-06-27... java中用正则表达式匹配并输出的时间怎样拿到别的方法里进行计算。例... Java程序 题目:星期计算器的实现。实现要点:输入一个2013-05-01后的日... 半夜敷面膜这些星座就是这样被吓死的 spring 定时任务,每年最后一天凌晨 触发执行的表达式怎么写,求指教。 spring定时任务表达式问题; quartz 每天 8-10点每隔10分钟执行一次,11-13点每隔1小时执行一次 cronExpression 要怎么写? 求一份医药销售第一季度工作总结 java中的定时任务@Scheduled中的cron每隔3天执行一次的表达式怎么写, spring定时任务时间表达式如何写? 每周星期三晚上8点执行 java定时任务的定时表达式,每天早晨6:30执行任务,还有一个是每个月的1号和15号执行任务 跪求:一份年度工作总结(销售类) 三季度工作总结四季度工作安排怎么写? GPS销售季度工作总结 季度工作总结怎么写? 销售极度总结怎么写的? 销售季度工作总结怎么写? 季度销售工作总结要怎么写? 季度工作总结怎么写 跟踪电影票房下载什么软件 乌鲁木齐市电影院票房大数据怎么下载 电影票房查询系统下载软件 哪里可以查电影票房 有什么能快速查询电影票房的软件吗?时光网客户端更新后好像就不行了。 spring定时任务每天晚上十二点执行 cron表达式如何写 spring cron配置每天上午10点,下午2点半定时的定时任务怎么配 我使用spring + quartz 做定时任务处理,想实现每隔三个星期的周二触发任务,这样一个cron 表达式怎么写 Quartz的定时任务。我要每隔24小时执行一次。Quartz怎么设置。 Java+cron定时任务指定时间后每隔28执行一次 cron表达式怎么设置每7天执行一次 请输入一个正整数n,然后输出由星号组成的菱形图案。 例如当输入3后,输入如下图案 * * * * * * * * * 我梦见一个不认识的男的说爱我,还死缠着我,甩都甩不掉,这梦什么意思啊 梦见有人缠着我不放,还有狗,声什么意思? 晚上睡着了,夜很长,做了一个奇怪的梦,梦见一个男的喜欢我,我走在哪点他都缠着我,我很反感讨厌他,我 qq怎样设置在线状态 老公很爱吃泡椒凤爪,求推荐性价比高的 袋装的泡椒凤爪牌子太多了,那种跟好吃啊? 辣媳妇这个牌子的凤爪正宗吗? 贻庆风味鸡爪300克多少钱一包 重庆辣媳妇的凤爪正宗吗? 高的智能食材净化器怎么样,值得购买吗? 昆山哪个镇的鸡爪出名? 重庆火锅店有很多,有没有性价比高一些的推荐?位置也要好 凤爪能跟鱼胶一起炖煮吗