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 {
	// 需要依赖业务相关层 所以依赖注入它
    @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  "我已经访问完毕";
    }
}

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值