本文主要是介绍通过反射获得并调用类的方法导致@Autowired注入失效的解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
引言
最近在优化公司平台项目,由于该平台是to B性质,所以有些需求需要 定制化开发,为了使代码向上兼容并且更加的灵活,所以用到了反射,但是在使用过程中遇到了@Autowired失效问题。
问题解析:
其实出现这个问题的原因很简单,就是我们通过获得的类没有纳入spring容器管理,下面来看一下错误代码:
反射代码如下:
//为了测试写死了String className ="M1CallBackService";Class c = Class.forName(packagePath + className);Method m = c.getMethod("callBack", new Class[]{Integer.class});//设置参数Object[] arguments = new Object[]{new Integer(robotServiceInfo.getRobotId())};m.invoke(c.newInstance(), arguments);
通过反射获得类的方法部分代码:
@Autowiredprivate NativeSqlMapper nativeSqlMapper;@Autowiredprivate EmailService emailService;/*** @Description: * @author: zhengha
这篇关于通过反射获得并调用类的方法导致@Autowired注入失效的解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!