Spring自带BeanUtils.copyProperties(Object source, Object target)之坑

本文探讨了在Java服务化项目中使用Spring的BeanUtils.copyProperties方法进行Bean复制时可能遇到的问题。当复合对象赋值失败时,原因在于源码中的类型检查。通过分析源码,了解到只有当源对象和目标对象是同一类或其子类时,赋值才会成功。对于非Java内置类型的复合对象,需要确保子对象也是同类型。作者建议在遇到此类问题时,创建公共Model对象以简化代码并提高维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直以来都打算准备写点东西,把所学所思的东西记录下来,方便日后学习和总结。但是由于之前技术水平有限,不敢随便发表一些技术文章,以免误人子弟,一直拖了三年,现在我积累了一定的经验,才敢勉强公开发表自己的一些认知和见解,如有不对之处,希望大家能够批评指正。

在java服务化项目中,客户端和服务端之间交互经常用到BeanCopy,其目的是为了方便类之间的赋值,简单方便,但是经常会遇到复合对象赋值不上去的情况,究其原因是对BeanUtils.copyProperties(Object source, Object target)方法底层源码的不了解导致的,下面我来一步一步解释其原因。

先看一个例子:

@Data
public class BdmTeamMonthNewStoreTopResult implements Serializable {
    private static final long serialVersionUID = -3251482519506276368L;
    /**
     * 排名列表
     */
    private List<BdmTeamMonthNewStoreTopInfo> topInfoList;

    /**
     * 我的排名信息
     */
    private BdmTeamMonthNewStoreTopMyInfo myTopInfo;

    @Override
    public String toString() {
        return ReflectionToStringBuilder.reflectionToString(this,
                ToStringStyle.SHORT_PREFIX_STYLE);
    }
}
@Data
public class MonthNewStoreTopInfoResponse implements Serializable {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值