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  "我已经访问完毕";
    }
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐