注册自己写的定时任务时遇到这个错误:
Fail to instantiate [org.springframework.scheduling.support.ScheduledMethodRunnable]: Constructor threw exception; nested exception is java.lang.NoSuchMethodException: $Proxy27.saveRecord()
java代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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( "任务异常!" ); } } } |
配置文件:
1 2 3 4 5 | < 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的,不知道怎么解决?
【毕设】SSM全面梳理,前后端分离,zTree 和复杂SQL打造权限系统,解惑MyBatis和RESTful
了解课程