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

本文转自IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/961036如需转载请自行联系原作者


woshixuye111

相关文章
|
25天前
|
Java 测试技术 开发者
必学!Spring Boot 单元测试、Mock 与 TestContainer 的高效使用技巧
【10月更文挑战第18天】 在现代软件开发中,单元测试是保证代码质量的重要手段。Spring Boot提供了强大的测试支持,使得编写和运行测试变得更加简单和高效。本文将深入探讨Spring Boot的单元测试、Mock技术以及TestContainer的高效使用技巧,帮助开发者提升测试效率和代码质量。
136 2
|
25天前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
42 1
|
24天前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
15天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
32 2
|
19天前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
28 1
|
25天前
|
存储 安全 Java
|
20天前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
25 1
|
28天前
|
存储 人工智能 Java
将 Spring AI 与 LLM 结合使用以生成 Java 测试
AIDocumentLibraryChat 项目通过 GitHub URL 为指定的 Java 类生成测试代码,支持 granite-code 和 deepseek-coder-v2 模型。项目包括控制器、服务和配置,能处理源代码解析、依赖加载及测试代码生成,旨在评估 LLM 对开发测试的支持能力。
36 1
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
61 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
61 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法