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 {
// 需要依赖业务相关层 所以依赖注入它
@Autowired
private 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 {
// 注入公用的指定定时任务类
@Autowired
MyTimeTask 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 "我已经访问完毕";
}
}