使用 Spring的时候Autowired无法注入成功,定位以及解决过程
- 问题复现
- 配置文件查询,发现service已经被管理
- 把Autowired加在setQueryDeviceByAreaService上发现方法形参是有值的
- 拿到本地打出来的service包,反编译发现有内部错误
- 发现下面那个service代码是ok的
- 用另外一个controller进行测试发现依旧是注入的成员变量为null
- 查阅资料发现,第四步的错误其实是反编译工具的错误
- 最终发现结果是controller方法定义为了private,但是springmvc使用的是动态代理,动态代理又是使用的反射,因此就可以进到该私有方法中,最终修改方式为把private修成成public就好了