java实现动态配置时间进行定时任务

springBoot进行集成
主要分为2部分:
1、第一步,创建公共的方法类:

package com.ngu.util;import com.ngu.basis.sys.user.entity.SysUser;
import com.ngu.basis.sys.user.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;/**
* @Description:    我的定时器---实现 TimerTask抽象类 重写 抽象方法run方法
* @Author:         huaShangJin
* @CreateDate:     2022/4/10 11:02
*/
// 因为这儿是和springBoot整合,将该类注入到spring ioc容器中。
@Component
public class MyTimeTask extends TimerTask {// 需要依赖业务相关层 所以依赖注入它@Autowiredprivate SysUserService sysUserService;// 重写的run 方法会在任务时间到达时候执行 该操作为异步操作public void run(){//在这里编写代码,需要执行的业务逻辑SysUser sysUser = new SysUser();sysUser.setId(0l);sysUser.setStatus(1);boolean b = sysUserService.updateById(sysUser);System.out.println("修改状态:"+b);}/*** @Description:    定时任务执行方法* @Author:         huaShangJin* @CreateDate:     2022/4/10 11:32* @param myTimeTask 对那个方法执行定时任务,当前为ioc容器中的 myTimeTask。* @param date 传入指定某个时间进行任务执行。*/public void timingTask(MyTimeTask myTimeTask, Date date){//创建构建定时任务对象Timer timer = new Timer();//构建定时任务timer.schedule(myTimeTask, date);//反复执行//int period = 10000;//10secs//timer.schedule(myTimeTask, date, period );}
}

2、第二步,进行定时任务方法的调用:

package com.ngu.biz;import com.ngu.util.MyTimeTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;@RequestMapping("/schedule")
@RestController
public class MyTimeS {// 注入公用的指定定时任务类@AutowiredMyTimeTask myTimeTask;// 实现调用@RequestMapping("/get")public Object mySchedule(){// 创建时间格式DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = null;try {// 指定时间date = dateFormatter .parse("2022-04-10 11:30:50");} catch (ParseException e) {e.printStackTrace();}// 进行定时任务方法调用,该方法为异步任务。myTimeTask.timingTask(myTimeTask,date);// 直接返回结果return  "我已经访问完毕";}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部