Spring 反射 问题
花了我整整一天半,没有理由不记下来。
大概是这样的,利用反射,为 Controller 的被注入的 Service 对象的字段赋值,在 debug 的过程中,发现并没有赋值成功(ctrl + shift + I 查看),但是又发现有赋值成功,大概是有时候显示的变量是接口,丢失了字段,debug 时查看变量,发现为 null;而有时候是实现类对象,查看变量,发现赋值成功,而且,在 Spring 中对反射(AOP) debug 增加了不少的成本。而最后,发现是赋值成功的,在 xxxServiceImpl 中发现字段是被赋值了,而在 contrller 中 xxxService 的字段显示没有赋值成功,可能就是上面提到的 debug 中接口的字段丢失的问题,因为涉及了反射,难以全部了解,只能暂时这样推测。
反思:以后遇到这种情况要小心(对于 debug 中的接口与实现类,以及 CGLIB 反射),只要 debug 明确的实现类就好。
浙公网安备 33010602011771号