需求:最近做项目遇到了一个需求,数据表中有些数据需要定时更新,这样就需要启动一个线程完成,不想再新建一个项目来完成这些事,就想在spring启动之后来开启一个线程定时来完成这件事 ,直接上代码
package com.irisian.picturelabel.listener; import com.irisian.picturelabel.service.PictureService; import com.irisian.picturelabel.service.TaskService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * Author:吴满心 * Date:2018/5/18 * Function:负责在spring容器加载完成之后进行图片和任务数据表的更新 */ @Component public class SpringFinishedListener implements InitializingBean { private static final Logger logger = LoggerFactory.getLogger(SpringFinishedListener.class); @Autowired private PictureService pictureService; @Autowired private TaskService taskService; @Override public void afterPropertiesSet() throws Exception { new Thread(() -> { while (true) { logger.info("开始执行图片和任务的更新操作!"); try { pictureService.updatePictureStatus(); //更新任务的完成状态信息 taskService.updateFinishStatus(); } catch (Exception e) { e.printStackTrace(); logger.error(e.getMessage()); } try { Thread.sleep(1800000); //30分钟执行一次进行数据更新 } catch (InterruptedException e) {