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

Java实现定时任务配置可以通过使用Spring框架提供的定时任务功能来实现。以下是一个示例代码段,展示了如何在Java配置和调用定时任务: 首先,在Java类中添加`@RestController`和`@RequestMapping`注解,创建一个RESTful API接口: ```java @RestController @RequestMapping("/schedule") 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 "我已经访问完毕"; } } ``` 在上述代码中,我们创建了一个`MyTimeS`类,并在其中定义了一个`mySchedule`方法,用于调用定时任务。通过 `@RequestMapping("/get")` 注解,我们将该方法映射到`/schedule/get`的URL路径上。 在`mySchedule`方法中,我们使用`SimpleDateFormat`类来指定需要执行定时任务时间。然后,我们通过调用`myTimeTask.timingTask()`方法来触发定时任务的执行。这个方法是一个异步任务,可以在后台线程中执行。 最后,通过返回一个字符串,我们告诉客户端定时任务已经触发完毕。 请注意,上述代码中的`MyTimeTask`类表示公用的指定定时任务类,它可能是您自己定义的一个类。你可以根据自己的需求来实现这个类,并在`MyTimeS`类中进行注入和调用。 这样,当访问`/schedule/get`路径时,Java程序将会执行定时任务并返回结果。<span class="em">1</span> #### 引用[.reference_title] - *1* [java实现动态配置时间进行定时任务](https://blog.csdn.net/weixin_41327271/article/details/124075170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值