企业网站建设心得,网站排名快速见效的方法,海口今天最新通知,金融网站排名优化【BUG】通过Autowired注入了一个Bean SeqNo#xff0c;测试的时候需要修改其中的字段。通过传统的反射#xff0c;无论如何都拿不到信息#xff0c;关键是一方面可以通过IDEA跳转#xff0c;一方面debug也确实能看到这个字段。但是每次调用set方法报错#xff1a;NoSuchFi… 【BUG】通过Autowired注入了一个Bean SeqNo测试的时候需要修改其中的字段。通过传统的反射无论如何都拿不到信息关键是一方面可以通过IDEA跳转一方面debug也确实能看到这个字段。但是每次调用set方法报错NoSuchFieldExceptiondcnNo36。 【问题分析】采用传统反射可能是因为 seqNo 是某个代理类或 AOP 代理对象导致反射时获取的类与实际的实现类不一致。 Class? seqNoClass seqNo.getClass();
Field field seqNoClass.getDeclaredField(dcnNo36);
field.setAccessible(true);
field.set(seqNo,123);【解决方案】ReflectionUtils.findField 是 Spring 提供的工具方法它会尝试查找指定名称的字段无论是公共的、私有的还是继承的字段。 Field field ReflectionUtils.findField(seqNoClass, dcnNo36);