首页 > 其他分享 >spring的工具类BeanUtils.copyProperties 非基本数据类型时的坑

spring的工具类BeanUtils.copyProperties 非基本数据类型时的坑

时间:2023-07-07 15:26:26浏览次数:41  
标签:name spring 数据类型 stu copyProperties Student List public String

  1. 复现前准备三个类,Student、Source、Target。Source和Target里面包含一个相同的非基本类型的字段(如下面示例中的stu字段)
public class Student {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


public class Source {
    private List<Student> stu;

    public List<Student> getStu() {
        return stu;
    }

    public void setStu(List<Student> stu) {
        this.stu = stu;
    }

}


public class Target {
    private List<String> stu;

    public List<String> getStu() {
        return stu;
    }

    public void setStu(List<String> stu) {
        this.stu = stu;
    }
}

  1. 复现
public static void main(String[] args) {
        Source source = new Source();
        source.setStu(Arrays.asList(new Student("John"), new Student("Jane")));

        Target target = new Target();
        BeanUtil.copyProperties(source, target);

        // 目前target里面的stu字段类型本身是String,但是copy的时候把source中stu的引用放到了target.stu里面
        System.out.println(target.getStu().get(0));  // 会报错: Student cannot be cast to java.lang.String
        
    }

  1. 总结
    待补充

  2. 解决办法

  • 手动get、set
  • 使用其他第三方工具

标签:name,spring,数据类型,stu,copyProperties,Student,List,public,String
From: https://www.cnblogs.com/lj500234/p/17535047.html

相关文章

  • Ubuntu系统部署springcloud+nacos遇到的问题。
    1,部署上的jar包运行正常,但是通过浏览器不能访问,telnet+IP+端口连接不通。小皮面板访问后台接口也是不通但是小皮面板可以通过浏览器访问。具体问题暂未解决。2,改用docker部署,将jar包和前端打的包,nacos,redis等打成镜像,放进docker里对外映射出端口可以正常访问。在用docker部署过......
  • SpringMVC学习巩固(页面跳转——重定向与转发)
    **要求方法返回值为String**默认:逻辑视图视图解析器找到对应的页面Handler中返会的String类型为跳转到的页面eg:return"hello";则执行方法后页面会跳转到hello.html重定向forward:@GetMapping("forward")publicStringforward(Stringpath){Sy......
  • springboot微服务架构有哪些?这些都是需要了解的
    SpringBoot是一种用于构建独立的、可扩展的、轻量级的Java应用程序的框架。它简化了Spring应用程序的开发过程,并提供了丰富的功能和集成的支持。在微服务架构中,SpringBoot可以作为一个基础框架来构建和管理各个微服务。下面是一些常用的SpringBoot微服务架构组件和技术:Sprin......
  • springcloud -hystrix服务熔断机制
    服务熔断:就是在错误率达到规定百分比的时候会开启,然后隔断消费者和服务端,在不断访问提升正确率后将其关闭,回复调用链路servicehystrix-payment-order8001增加方法  //=========服务熔断 @HystrixCommand(fallbackMethod="paymentCircuitBreaker_fallback",commandPro......
  • springcloud- hystrix服务降级简单讲解
    在出现错误的时候我们需要即使进行处理并返回提示信息给用户实现交互友好化,我们使用一下注解来实现服务降级功能,一般我们将服务降级配置在客户端相关注解provider8001 ​ @EnableCircuitBreaker //服务降级激活注解服务端主启动类 @HystrixCommand(fallbackMethod=......
  • 手把手教你自定义自己SpringBoot Starter组件源码剖析
    我们知道SpringBootStarter也就是启动器。是SpringBoot组件化的一大优点。基于这个思想,基于这个思想SpringBoot才变得非常强大,官方给我们提供很多开箱即用的启动器。SpringBootStarter是SpringBoot的一个重要特性,它有以下优点:依赖管理:Starter自动处理项目的依赖关系,......
  • spring注解之@PostConstruct在项目启动时执行指定方法
    学习资料:https://juejin.cn/post/7247543825534419000https://qa.1r1g.com/sf/ask/238458881/......
  • spring boot
    当spriingboot后端出现 springboot启动异常java.sql.SQLNonTransientConnectionException:Couldnotcreateconnectiontodatabaseserver.Attemptedreconnect3times.Givingup这个是因为数据库链接url未加入时区在后面加上server&Timezong=UTC就可以解决了......
  • SpringBoot整合EasyExcel 3.x
    目录1EasyExcel3.x1.1简介1.2引入依赖1.3简单导出1.3.1定义实体类1.3.2自定义转换器1.3.3定义接口1.4简单导入1.5复杂导出1.5.1引言1.5.2自定义注解1.5.3定义实体类1.5.4数据映射与平铺1.5.5自定义单元格合并策略1.5.6定义接口1EasyExcel3.x1.1简介EasyExce......
  • springcloud - openFeign的简单配置和使用
    openFeign第一步:导入依赖     <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-starter-openfeign</artifactId>     </dependency>第一步:进行配置 server: port:8......