SpringTask添加定时任务出错
来源:6-4 订单模块_SpringTask实现定时更新
Unlimitedbladewo0
2017-12-03
注册自己写的定时任务时遇到这个错误:
Fail to instantiate [org.springframework.scheduling.support.ScheduledMethodRunnable]: Constructor threw exception; nested exception is java.lang.NoSuchMethodException: $Proxy27.saveRecord()
java代码:
packge com.icbc.gdjm.bcms.task; @Component("StoreRecordTask") public class StoreRecordTask { private static final Logger log = LoggerFactory.getLogger(StoreRecordTask.class); @Inject private ItemStoreDao itemStoreDao; @Transactional public void saveRecord() { int flag = 0; try { flag = itemStoreDao.saveStoreLog(); if (flag == 1) { log.info("更新了库存"); } else { log.info("异常,请查看数据库!"); } } catch (Exception e) { log.warn("任务异常!"); } } }
配置文件:
<context:component-scan base-package="com.icbc.gdjm.bcms.task"></context:component-scan> <task:scheduled-tasks> <task:scheduled ref="StoreRecordTask" method="saveRecord" cron="0 55 22 * * ?" /> </task:scheduled-tasks>
如果把dao层的注入去掉,直接手写jdbc就不会报错,网上查原因说是private造成的,但我的方法是public的,不知道怎么解决?
写回答
2回答
-
除了@Inject注解,和视频里的没什么区别,你再看看其他方面有没有区别,你可以运行完整版代码,然后把你写的内容一点一点往完整版里加。
072017-12-03 -
Unlimitedbladewo0
提问者
2017-12-03
修改了代码,增加了服务层:
@Service public class ApiServiceImpl implements ApiService { @Inject private ItemStoreDao itemStoreDao; @Transactional public boolean saveStoreLog() { return 1 == itemStoreDao.saveStoreLog(); } }
packge com.icbc.gdjm.bcms.task; @Component("StoreRecordTask") public class StoreRecordTask { private static final Logger log = LoggerFactory.getLogger(StoreRecordTask.class); @Inject private ApiService apiService; public void saveRecord() { try { if (apiService.saveStoreLog()) { log.info("更新了库存"); } else { log.info("异常,请查看数据库!"); } } catch (Exception e) { log.warn("任务异常!"); } } }
然后。。。。。。。就可以了。。。。。什么鬼,直接调用Dao就出错,虽然问题解决了,但是很不爽。。。
00
IT段子手详解MyBatis遇到Spring 秒学Java SSM开发大众点评
【毕设】SSM全面梳理,前后端分离,zTree 和复杂SQL打造权限系统,解惑MyBatis和RESTful
1001 学习 · 485 问题
相似问题
老师
回答 2
添加广告图片不是保存在原有文件夹下
回答 5