【项目实训】Bean拷贝工具类

我们知道在MVC开发过程中,各个层之间往往有不同的对象在函数调用中传递,而这些对象虽然类型不同,但往往是有很多相同的属性,典型的比如数据库能查到很多数据,但在服务层我们需要用的只是其中一部分,或者我们希望给用户展示/暴露的只是一部分,那么在这种场景下,我们就需要bean拷贝工具类(当然你也可以直接写get,set,这样性能也很好,但却给开发与维护带来了许多不便)。

主流的bean拷贝实现大致有 Apache BeanUtils ,Spring BeanUtils,cglib BeanCopier,Hutool BeanUtil,Mapstruct…

除了Apache那个不太推荐(性能太差了),其他基本都可以用。

从实现层面,Apache BeanUtils ,Spring BeanUtils,Hutool BeanUtil都是基于反射实现的,cglib BeanCopier相比前面三个性能会更好(底层用ASM做动态代理),Mapstruct则更狠,在编译期生成代码,性能比前面几个都要好。

代码

为了不引入额外的依赖,我直接用了spring的BeanUtils

进一步,为了更便于使用,我们可以对其做一层简单包装

public static <V> V copyBean(Object source,Class<V> clazz) {
        V result = null;
        try {
            result = clazz.newInstance();
            BeanU
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值