一、主要是注意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的版本低的原因吗,这个没有亲测过。
有问题欢迎留言