天天看點

BeanUtils.copyProperties()用法

Spring BeanUtils類提供屬性字段複制方法

1.public static void copyProperties(Object source, Object target)

内部都是調用下面的私有方法

2.public static void copyProperties(Object source, Object target, String… ignoreProperties)

内部都是調用下面的私有方法,ignoreProperties可以是一組需要忽略複制的字元串

3.public static void copyProperties(Object source, Object target, Class<?> editable)

内部都是調用下面的私有方法,editable确定需要操作的目前對象類

private static void copyProperties(Object source, Object target, Class<?> editable, String… ignoreProperties)

實作邏輯:

1.判斷target能否轉換為editable類的類型,不能直接異常"Target class [" + target.getClass().getName() +"] not assignable to Editable class [" + editable.getName() + “]”

2.擷取目标類型的所有屬性PropertyDescriptor,提取忽略字段ignoreProperties

3.循環處理目标類型字段,隻處理非忽略字段,通過源bean的類型和處理字段名稱,擷取對應源PropertyDescriptor

4.對源屬性PropertyDescriptor的read方法判斷類型是否和目标屬性寫的類型比對,方法類型是否public的

5.最終符合條件的通過反射寫入writeMethod.invoke(target, value);