原创

Java工具类中读取配置时间 实现定时任务

温馨提示:
本文最后更新于 2022年11月22日,已超过 493 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

SpringBoot项目的yml配置文件中配置时间,在工具类读取配置时间,定时查询数据库,实现定时任务。

注意:

1.工具类需要@Component

2.需要静态成员方法。

3.set方法不能为static。

4.注解@Value直接在set方法上。

工具类代码如下:

import java.util.Date;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * 定时任务
 * @author 王小东
 *
 */
@Component
public class TimedtaskUtil {
	
	private static String minute;

	@Value("${timedtask.minute}")
	public void setMinute(String minute) {
		TimedtaskUtil.minute = minute;
	}    private static BaseinfoMapper baseinfoMapper;

      @Autowired
	public void setBaseinfoMapper(BaseinfoMapper baseinfoMapper) {
    	       TimedtaskUtil.baseinfoMapper= baseinfoMapper;
	}

	public void start() {
		if(StringUtils.isBlank(minute)) {
			minute = "10";
		}
		System.out.println("------已成功开启定时任务,当前配置任务间隔时间为:: "+minute+" 分钟-----定时任务创建时间:: "+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
		// 创建定时器任务
            TimerTask timerTask = new TimerTask() {
              @Override
              public void run() {            //数据库查询任务 定时保持连接
                    baseinfoMapper.selectInvUserTimedTask();
              }
        };
 
        ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(2);
 
        scheduledThreadPool.schedule(timerTask, Long.valueOf(minute), TimeUnit.MINUTES);
        scheduledThreadPool.scheduleAtFixedRate(timerTask, Long.valueOf(minute), Long.valueOf(minute), TimeUnit.MINUTES);
    
	}
}

启动入口类调用start方法


正文到此结束
该篇文章的评论功能已被站长关闭
本文目录