Spring中BeanUtils.copyProperties方法测试

简介:

 

copyProperties顾名思义是复制属性,就是把A对象的属性复制给B对象的与之相同的属性。下面的属性省略Getter,Setter。


public class UserOne
{
 private int id;
 private String name;

 @Override
 public String toString()
 {
  return id + "......." + name;
 }
}

 


public class UserTwo
{
 private int id;
 private String name;
 private String address;

 @Override
 public String toString()
 {
  return id + "......." + name + "........" + address;
 }
}

 

 

public class UserThree
{
 private String id;
 private String name;
 private String address;

 @Override
 public String toString()
 {
  return id + "......." + name + "........" + address;
 }
}

 


import org.springframework.beans.BeanUtils;

public class Test
{
 public static void main(String[] args)
 {
  LessToMore();
  MoreToLess();
  ArgusMisMatch();
 }

 

 // 属性值少的复制给属性值多的,没有被复制到的属性就是该类型的默认值。 结果1......xy......null
 public static void LessToMore()
 {
  UserOne u1 = new UserOne();
  u1.setId(1);
  u1.setName("xy");
  UserTwo u2 = new UserTwo();
  
BeanUtils.copyProperties(u1, u2);
  System.out.println(u2);
 }


 
 // 属性值多的复制给属性值少的。结果1......xy
 public static void MoreToLess()
 {
  UserTwo u2 = new UserTwo();
  u2.setId(1);
  u2.setName("xy");
  u2.setAddress("aa");
  UserOne u1 = new UserOne();

  BeanUtils.copyProperties(u2, u1);
  System.out.println(u1);
 }


 
 //  报错argument type mismatch。u2的id类型是int,u3的id类型是String
 public static void ArgusMisMatch()
 {
  UserTwo u2 = new UserTwo();
  u2.setId(1);
  u2.setName("xy");
  u2.setAddress("aa");
  UserThree u3 = new UserThree();
  
BeanUtils.copyProperties(u2, u3);
  System.out.println(u3);
 }
}

 

总结一下

A对象把与同名且同类型的属性复制给B对象的属性。

没有同名的,B对象的没有被复制值的属性为该类型的默认值。

同名但类型不同,会报错:argument type mismatch

 

 

目录
相关文章
|
7月前
|
存储 Java 测试技术
《Spring 测试指南》:JPA、MockMvc 和 @SpringBootTest 详解
Spring 提供了一组测试工具,可以轻松地测试 Spring 应用程序的各个组件,包括控制器、服务、存储库和其他组件。它具有丰富的测试注释、实用程序类和其他功能,以帮助进行单元测试、集成测试等。
121 0
|
Java Spring
解决Spring工具类BeanUtils copyProperties方法复制null的问题
解决Spring工具类BeanUtils copyProperties方法复制null的问题
934 0
|
22天前
|
XML Java Apache
Spring中的BeanUtils.copyProperties
`BeanUtils.copyProperties()` 是 Spring 框架提供的工具方法,用于将一个 JavaBean 对象的属性值复制到另一个 JavaBean 对象中。主要功能包括属性拷贝、简化代码、类型转换等。该方法基于反射实现,支持属性名匹配和赋值,但仅执行浅拷贝,不支持深拷贝。使用时需注意属性名称和类型匹配,以及处理 null 值等问题。
Spring中的BeanUtils.copyProperties
|
7月前
|
Java Apache Spring
Spring BeanUtils与Apache BeanUtils提供基本属性复制,适用于简单需求
【5月更文挑战第4天】Spring BeanUtils与Apache BeanUtils提供基本属性复制,适用于简单需求;Cglib BeanCopier用于转换为Cglib代理对象;Apache PropertyUtils处理属性操作;Dozer支持复杂对象映射。选择工具取决于具体需求,如需精细控制或对象映射,推荐Dozer或Apache PropertyUtils。Apache BeanUtils可能因潜在的封装性破坏被禁用。
73 3
|
7月前
|
XML 监控 Java
Spring基础 SpringAOP
Spring基础 SpringAOP
48 0
|
Java Apache 数据库
Spring的BeanUtils的copyProperties方法
项目中遇到的情况是: 文件解析完之后将文件放在一个pojo里面
135 0
|
Java Apache Spring
Spring的BeanUtils有坑?可能是你用错了!
Spring的BeanUtils有坑?可能是你用错了!
97 0
|
Java Spring
Spring 注入 Bean 到 List / Map 中
前言 由于在工作中遇到了这样的问题,所以随笔写下来,记录一下。我们平常习惯的注入方式是:@Autowiredprivate 类的名称 对象名称;这种方式是最简单的,也是最实用的。但是有些时候我们就需要将实现了同样接口的Bean注入到Context中,然后可以用 List / Map 接受注入的对象。
3441 0
|
Java Spring
spring学习24-:在javaconfig中配置bean对象
spring学习24-:在javaconfig中配置bean对象
98 0
spring学习24-:在javaconfig中配置bean对象