关于BeanUtils.copy方法太耗性能问题

小编前几天遇见一个问题,组长说beanUtils太好性能了怎么样解决?

我们的项目是个springcloud微服务项目,所以很怕jar包冲突,因此这个问题要解决

解决办法就是自定义转换器

使用到这个场景无非是得到的对象与传递给前端的不一致

1.首先写一个抽象接口

package com.huawei.koophone.openpower.common.converter;

import java.util.ArrayList;
import java.util.List;

/**
 * 对象转换父类
 *
 * @author zouchaoyu
 * @version 2023/10/22
 * @see [自定义注解]
 * @since []
 */
public abstract class BaseConverter<D, E>
{

	/**
	 * DTO转Entity
	 *
	 * @param dto /
	 * @return /
	 */
	public abstract E toEntity (D dto);

	/**
	 * Entity转DTO
	 *
	 * @param entity /
	 * @return /
	 */
	public abstract D toDto (E entity);

	/**
	 * DTO集合转Entity集合
	 *
	 * @param dtoList /
	 * @return /
	 */
	public List<E> toEntity (List<D> dtoList)
	{
		if (dtoList == null)
		{
			return null;
		}

		List<E> list = new ArrayList<> (dtoList.size ());
		for (D dto : dtoList)
		{
			list.add (toEntity (dto));
		}

		return list;
	}

	/**
	 * Entity集合转DTO集合
	 *
	 * @param entityList /
	 * @return /
	 */
	public List<D> toDto (List<E> entityList)
	{
		if (entityList == null)
		{
			return null;
		}

		List<D> list = new ArrayList<> (entityList.size ());
		for (E entity : entityList)
		{
			list.add (toDto (entity));
		}

		return list;
	}
}

然后我们先来看看不使用这个转换器,使用set的场景

我想要将SubsListReq转换成QuerySubsProductReq,我使用的set赋值,不是说不可以,只是不美观,看起来也很low

于是我新建了一个QuerySubsProductReqConvert 类,注入bean,然后实现BaseConverter(我们自定义接口,上面那个)<>里面是需要互相转换的类,它会自动生产下面二个方法,你可以根据返回值来看。

然后我们在需要转换的地方得到这个类,然后调用它的方法,如果你找不到方法名,注意方法是不是public的

另外说一下为什么注入使用private final 类名 对象名

因为这个可以在加载时直接注入,不需要等到用了再注入,有bug可以第一时间发现

好啦,喜欢小编的记得一键三连哦

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值