【死磕jeesite源码】Jeesite配置定时任务

一、主要是注意XML文件中设置3个地方和类文件中配置

第一步配置:
第二步配置:注解扫描

 第三步配置:开启任务

类中注解配置:如下

@Service 或者Component
@Lazy(false)
public class ImportGamexxjh5 {
 private static Logger logger = LoggerFactory.getLogger(ImportGamexxjh5.class);
  @Autowired
 Gamexxjh5Service gamexxjh5Service;
 @Autowired
 TfAnaysisResultTyhxService tfAnaysisResultTyhxService;
 
 @Scheduled(cron = "0 4 18 * * ?")
 public void importGameXXJH5() {
 logger.info("-------执行importGameXXJH5开始------->"+ DateUtils.getDateTime());
 SimpleDateFormat myFmt = new SimpleDateFormat("yyMMdd");
 Date date = new Date();
 String nowdate = myFmt.format(date);
 String tablename="order_"+nowdate;
 rundata(tablename);
 logger.info("-------导入H5数据库中"+tablename+"表的渠道汇总数据----");
 logger.info("-------执行importGameXXJH5结束------->"+DateUtils.getDateTime());
 }
 
 public void rundata(String tablename) {
 //数据源切至H5数据库,获取按渠道按天汇总数据
 DynamicDataSource.setCurrentLookupKey("h5_dataSource");
 List<Gamexxjh5> gList = gamexxjh5Service.queryAll(tablename);
 //数据源切换回至版权数据库
 DynamicDataSource.setCurrentLookupKey("dataSource");
 //将数据导入至版权的数据表中
 for (Gamexxjh5 item : gList) {
 TfAnaysisResultTyhx tfAnaysisResultTyhx =new TfAnaysisResultTyhx();
 tfAnaysisResultTyhx.setChannelid(item.getChannelid());
 tfAnaysisResultTyhx.setChannelname(item.getChannelname());
 tfAnaysisResultTyhx.setDaypayment(item.getDaypayment());
 tfAnaysisResultTyhx.setStatdate(item.getStatdate());
 
 tfAnaysisResultTyhx.setGameid("41");
 tfAnaysisResultTyhx.setGamename("新仙剑H5");
 tfAnaysisResultTyhx.setGameEnglishName("xinxianjianH5");
 tfAnaysisResultTyhx.setResult("Y");
 tfAnaysisResultTyhx.setChanneltype("");
 tfAnaysisResultTyhx.setIpowner("大宇资讯股份有限公司");
 tfAnaysisResultTyhx.setIpownerid("8");
 tfAnaysisResultTyhx.setMoneycl(item.getDaypayment());
 tfAnaysisResultTyhx.setMoney(item.getDaypayment());
 tfAnaysisResultTyhxService.save(tfAnaysisResultTyhx);
 }
 }
}

二、总结:

配置文件中必要项:
  • xmlns:task="http://www.springframework.org/schema/task"
  • http://www.springframework.org/schema/task
  • http://www.springframework.org/schema/task/spring-task-4.1.xsd
  • <task:annotation-driven />
类中注解必要项:
  • @Service 或者Component
  • @Lazy(false)
  • @Scheduled(cron = "0 4 18 * * ?")
  • 类中引用其他service层用属性注入 @Autowired即可

三、注意事项

【1】main调用的时候不能通过 @Autowired 来进行注解,
因为你没有启动项目,相当于你注入的东西没有没有被使用,
使用main方法使用的话,必须使用getbean获取实例对象。
【3】本版本采用的spring4.0 ,网上有文章写 @Scheduled不支持属性注入 @Autowired,
因为定时任务会在属性注入之前执行,是不是spring的版本低的原因吗,这个没有亲测过。
有问题欢迎留言

猜你喜欢

转载自www.cnblogs.com/abc8023/p/9123030.html