Java浅拷贝BeanUtils.copyProperties引发的RPC异常
💡
原文中文,约1600字,阅读约需4分钟。
📝
内容提要
在敏捷团队建设中,通过Suite执行器实现了一键自动化单元测试。排查过程中发现传参的报文格式有问题,经过排查和代码分析,发现是BeanUtils.copyProperties导致的。解决方案是手动赋值。后续反思是要谨慎使用BeanUtils.copyProperties。
🎯
关键要点
- 在敏捷团队建设中,通过Suite执行器实现了一键自动化单元测试。
- 排查过程中发现传参的报文格式有问题,经过分析发现是BeanUtils.copyProperties导致的。
- 解决方案是去掉BeanUtils.copyProperties,进行手动赋值。
- 后续反思包括谨慎使用BeanUtils.copyProperties和考虑使用MapStruct进行转换。
❓
延伸问答
BeanUtils.copyProperties引发的异常是什么?
引发的异常是java.lang.ClassCastException,表示无法将HashMap转换为BatchInfo。
如何解决BeanUtils.copyProperties导致的问题?
解决方案是去掉BeanUtils.copyProperties,改为手动赋值。
在敏捷团队中如何实现自动化单元测试?
通过Suite执行器实现了一键自动化单元测试。
为什么要谨慎使用BeanUtils.copyProperties?
因为它属于浅拷贝,只调用子对象的set方法,可能导致反序列化时找不到对应的类。
如果需要频繁转换对象,应该使用什么工具?
建议使用MapStruct进行对象转换。
在排查过程中发现了什么问题?
发现传参的报文格式有问题,最终定位到BeanUtils.copyProperties的使用。
➡️