刚接触quartz,参考网上资料写了一个定时触发问询更新数据库的代码,在配置的地方出了问题,因为之前参考的博客比较老了,
quartz 的版本在1.8.6以下,所以依赖的类是CronTriggerBean。
我自己的quartz版本是2.3.0,依赖类变成了CronTriggerFactoryBean,所以运行的时候一直报错找不到CronTriggerBean。
翻了很多博客才找到了这个问题,记录一下。
下面是参考网上写的定时查询更新的代码和调度配置。
spring的配置
web.xml的配置
定时查询并更新订单情况
public void execute() throws ParseException{
List<usingInfo> usinginfo = new ArrayList<usingInfo> ();
usinginfo = usingService.getAll();
int i,j;
Date date = new Date();
for (i=0;i<usinginfo.size();i++) {
String startTime=usinginfo.get(i).getStarttime();
String endTime=usinginfo.get(i).getEndtime();
String User=usinginfo.get(i).getOrderform();
String[] starttime = startTime.split(";");
String[] endtime = endTime.split(";");
String[] user = User.split(";");
String start = "";
String end = "";
String form = "";
for (j=0;j<starttime.length;j++) {
Date day1 = dateUtil.strToDate(starttime[j]);
Date day2 = dateUtil.strToDate(endtime[j]);
if (dateUtil.daysOfTwo(day2, date) < 0) { //删除权限
privilegeService.delete(Integer.getInteger(user[j]));//删除出入权限
orderService.delete(Integer.getInteger(user[j]));//删除订单
hotelInfo hotelinfo = new hotelInfo();
BigDecimal price = hotelinfo.getPrice();
//添加历史订单
historyInfo historyinfo=new historyInfo();
historyinfo.setUserid(Integer.getInteger(user[j]));
historyinfo.setHotelid(usinginfo.get(i).getHotelid());
historyinfo.setStarttime(day1);
historyinfo.setEndtime(day2);
historyinfo.setIspay(0);
int day = dateUtil.daysOfTwo(day2, date);
String str = String.valueOf(day);
BigDecimal bd=new BigDecimal(str);
historyinfo.setPrice(price.multiply(bd));
historyService.insert(historyinfo);//增加历史订单
}
else {
start += starttime[j];
end += endtime[j];
form += user[j];
}
}
usinginfo.get(i).setStarttime(start);
usinginfo.get(i).setEndtime(end);
usinginfo.get(i).setOrderform(form);
usingService.update(usinginfo.get(i));//更新使用情况
}
}