org.springframework.beans.BeanUtils.copyProperties()
和
org.apache.commons.beanutils.BeanUtils.copyProperties()
是两个常用的Java库函数,用于在不同JavaBean对象之间复制属性值。
使用示例
Spring的BeanUtils.copyProperties()
User user = new User();
user.setName("Alice");
user.setAge(30);
UserDTO userDTO = new UserDTO();
BeanUtils.copyProperties(user, userDTO);
Apache Commons BeanUtils.copyProperties()
User user = new User();
user.setName("Bob");
user.setAge(25);
UserDTO userDTO = new UserDTO();
BeanUtils.copyProperties(userDTO, user);
过滤属性
在Spring 的BeanUtils.copyProperties()
方法增加了一个可变参数,允许在复制过程中忽略某些属性。
User user = new User();
user.setName("Alice");
user.setAge(30);
UserDTO userDTO = new UserDTO();
BeanUtils.copyProperties(user, userDTO, "age"); // 忽略复制age属性
Spring的方法提供了一组非详尽的源示例 以及可复制的目标属性类型以及源和目标 无法复制的属性类型。
源属性类型 | 目标属性类型 | 支持复制 |
---|---|---|
Integer | Integer | 是的 |
Integer | Number | 是的 |
List<Integer> | List<Integer> | 是的 |
List<?> | List<?> | 是的 |
List<Integer> | List<?> | 是的 |
List<Integer> | List<? extends Number> | 是的 |
String | Integer | 不 |
Number | Integer | 不 |
List<Integer> | List<Long> | 不 |
List<Integer> | List<Number> | 不 |