日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSM实现定时任务的两种方式

發(fā)布時(shí)間:2024/10/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSM实现定时任务的两种方式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

方式一:在spring-servlet.xml中配置任務(wù)約束,并開啟任務(wù)

xmlns:task="http://www.springframework.org/schema/task"

?

xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd "

?

<task:annotation-driven/>

配置好之后,定義任務(wù)類:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class CzTongjiTask {

?? ?@Scheduled(cron = "0/5 * * * * ? ")
?? ?public void tongjiTask() {
?? ??? ?System.out.println("-----------");
?? ?}

}

?到此,第一種配置定時(shí)任務(wù)結(jié)束。

方式二:創(chuàng)建實(shí)現(xiàn)Job接口的實(shí)現(xiàn)類

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Map;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import mapper.CommonMapper;

public class TongjiTaskJob implements Job {

?? ?@Autowired
?? ?private CommonMapper commonMapper;

?? ?public TongjiTaskJob() {
?? ??? ?SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
?? ?}

?? ?@Override
?? ?public void execute(JobExecutionContext context) throws JobExecutionException {
?? ??? ?try {
?? ??? ??? ?System.out.println(calendar.getTime());
?? ??? ?} catch (Exception e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}

?? ?}

}

創(chuàng)建任務(wù)管理類,并在該類中執(zhí)行指定的定時(shí)任務(wù)

import org.apache.log4j.Logger;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.stereotype.Component;

@Component
public class TimerTaskScheduleManage {
?? ?private final Logger logger = Logger.getLogger(this.getClass());

??

?? ?private void AddTongjiTask() {
?? ??? ?String taskId = "TongjiTaskJob";
?? ??? ?String groupName = taskId + "Group";
?? ??? ?try {
?? ??? ??? ?Scheduler scheduler = factory.getScheduler();
?? ??? ??? ?TriggerKey triggerKey = new TriggerKey(taskId, groupName);
?? ??? ??? ?CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
?? ??? ??? ?if (trigger == null) {
?? ??? ??? ??? ?// 創(chuàng)建工作內(nèi)容
?? ??? ??? ??? ?JobDetail jobDetail = JobBuilder.newJob(TongjiTaskJob.class).withIdentity(taskId, groupName).build();
?? ??? ??? ??? ?// 創(chuàng)建觸發(fā)器
?? ??? ??? ??? ?trigger = TriggerBuilder.newTrigger().withIdentity(taskId, groupName)
?? ??? ??? ??? ??? ??? ?.withSchedule(CronScheduleBuilder.cronSchedule("0 0 2 1/1 * ? ")).build();
?? ??? ??? ??? ?// 粘合工作和觸發(fā)器
?? ??? ??? ??? ?scheduler.scheduleJob(jobDetail, trigger);
?? ??? ??? ??? ?// 啟動(dòng)調(diào)度器
?? ??? ??? ??? ?scheduler.start();
?? ??? ??? ?}
?? ??? ?} catch (Exception e) {
?? ??? ??? ?logger.error("添加TongjiTask定時(shí)任務(wù)異常!" + e.getMessage());
?? ??? ?}
?? ?}

?? ?// 定時(shí)執(zhí)行的方法
?? ?public void execute() {
? ? ? ??
?? ??? ?this.AddTongjiTask();
?? ?}
}

到此第二種定時(shí)任務(wù)配置結(jié)束,啟動(dòng)項(xiàng)目即可執(zhí)行定時(shí)任務(wù)。

注意:如果不想在第一種方式中執(zhí)行定時(shí)任務(wù):就把@Scheduled注解注釋掉,在第二種方式中不想指定定時(shí)任務(wù),就把紅色字體的代碼注釋掉即可

總結(jié)

以上是生活随笔為你收集整理的SSM实现定时任务的两种方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。