若依框架定时任务报任务执行异常 - :java.lang.reflect.InvocationTargetException: null
java.lang.reflect.InvocationTargetException: null异常的出现是因为项目启动完成后,调用相关方法,@Component先注入到Spring容器中,而@Autowired比@Component注入的慢,后一步注入到Spring容器中, 如果在@Component定义的方法下引用@Autowired注入Service中的方法,则会报null(空指针异常),
原因:我想写一个定时任务用来执行方法,但是我这个方法在controller中是正常运行的,但是当我放到定时任务中就报错,这是错误信息

刚开始我以为是在Component注解下通过@Autowired注入Service层出现java.lang.reflect.InvocationTargetException: null异常,因为
java.lang.reflect.InvocationTargetException: null异常的出现是因为项目启动完成后,调用相关方法,@Component先注入到Spring容器中,而@Autowired比@Component注入的慢,后一步注入到Spring容器中, 如果在@Component定义的方法下引用@Autowired注入Service中的方法,则会报null(空指针异常),就是因为@Component比@Autowired注入快,导致注入的方法无法使用。
但是后面我发现不是这个原因,因为经过排查只有一个注入的service异常,最后发现是因为这个service的实现类上有一个数据权限的注解如下图:

这个注解是我在实现数据权限控制时加的,当我把注解注释掉,定时任务再次调用就恢复正常了,我不知道二者有什么联系,于是又重新写了一个方法,这个或许是最笨的办法了。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)