定时器任务开始执行的时候,一直没办法加载,后来发现是service为null
这是定时器执行的方法,在调用TimeWorkAction以后,里面的service就是null了
public class WorkTimer extends HttpServlet{
//时间间隔(一天)
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("开始执行定时器查询");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 19); //夜晚23点
calendar.set(Calendar.MINUTE, 57);
calendar.set(Calendar.SECOND, 0);
Date date=calendar.getTime(); //第一次执行定时任务的时间
TimerTask task = new TimeWorkAction();
Timer timer = new Timer();
timer.schedule(task,date, PERIOD_DAY);
super.init();
}
}
@Component
public class TimeWorkAction extends TimerTask{
WorkService workService = (WorkService)ApplicationContextUtil.getBean("workService");
Work work = (Work)ApplicationContextUtil.getBean("work");
public void run(){
try {
//获取当前日期
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = new Date();
String dates = simpleDateFormat.format(date1);
long currentDate = 0;
try {
currentDate = simpleDateFormat.parse(dates).getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//获取权限用户
List userName = workService.getName();
for (int i = 0; i < userName.size(); i++) {
Object obj = userName.get(i);
String name = obj.toString();
List addDate = workService.addDate(name,currentDate);
if(addDate.isEmpty()){
work = new Work();
work.setName(name);
work.setWorkDate(currentDate);
workService.save(work);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public WorkService getWorkService() {
return workService;
}
public void setWorkService(WorkService workService) {
this.workService = workService;
}
public Work getWork() {
return work;
}
public void setWork(Work work) {
this.work = work;
}
}
之前service直接private WorkService workService也不行