错误案例
现象描述:性能测试时,发现CPU占有率很高,经过jprofiler的分析,发现CPU大部分被BeanUtils占用了,成了性能瓶颈。
工作中,经常会碰到两个bean之间的拷贝,如MemberDO拷贝到MemberVO
BeanUtils.copyProperties(member, memberVO);
BeanUtils是通过效率相对低的反射机制进行属性值的拷贝,而cglib中工具类BeanCopier性能上优于BeanUtils的原因就在于,前者在字节码级别生成了前文所述的setter和getter拷贝属性值的指令代码;
阿里巴巴编码规范
// cache此copy实例
private static BeanCopier copy = BeanCopier.create(Bean.class, Bean2.class, false);
public MemberVO