- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 POJO 对象的属性复制到另一个不可变对象(immutable对象)的Builder,如下所示:
public class CopyTest {
// the source object
public static class Pojo1 {
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
// the target object
public static class Pojo2 {
private final int value;
public Pojo2(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static Pojo2Builder builder() {
return new Pojo2Builder();
}
// builder of the target object, maybe generated by lombok
public static class Pojo2Builder {
private int value;
private Pojo2Builder() {}
public Pojo2Builder value(int value) {
this.value = value;
return this;
}
public Pojo2 build() {
return new Pojo2(value);
}
}
}
public static void main(String[] args) {
Pojo1 src = new Pojo1();
src.setValue(1);
Pojo2.Pojo2Builder builder = Pojo2.builder();
// this won't work, provided by spring-beans
BeanUtils.copyProperties(src, builder);
Pojo2 target = builder.build();
}
}
问题是:spring-beans
提供的BeanUtils.copyProperties()
不会调用Pojo2Builder.value(int)
,因为它是不是 setter
;
此外Builder类通常由lombok生成所以我不能将方法 Pojo2Builder.value(int)
命名为 Pojo2Builder.setValue(int)
。
顺便说一句,我已经通过注册自定义的 BeanIntrospector< 在 apache commons 提供的
,但我发现当复制发生在两个不同之间时,使用 commons-beanutils
中使用 BeanUtilsBean.copyProperties()
来实现它commons-beanutils
复制属性比使用 spring-beans
复制属性要昂贵得多类,所以我更喜欢使用 spring-beans 来做到这一点
那么是否可以使用 Spring 或其他一些比 commons-beanutils
更高效的实用程序将属性复制到 Builder 类?
最佳答案
您不仅需要更改方法名称,还需要将其返回类型更改为 void
(对于构建器来说相当愚蠢)。添加 @Setter
注释会有所帮助,if it was allowed .
如果您需要将值复制到同一类的构建器中,那么您可以使用 Lombok 的 toBuilder()
。或者直接使用@Wither
创建对象。
如果您需要遵守 Bean 约定,那么您可能不走运。考虑使用mapstruct ,应该更灵活。
关于java - 使用 Spring 提供的 BeanUtils.copyProperties 将属性复制到 Builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44649976/
前言 最近项目上要求升级一个工具包 hutool 的版本,以解决安全漏洞问题,这不升级还好,一升级反而捅出了更大的篓子,究竟是怎么回事呢? 事件回顾 我们项目原先使用的 hu
目录 BeanUtils.copyProperties()参数的赋值顺序 BeanUtils.copyProperties初体验,及其参数含义解释
Beanutils.copyProperties()用法及重写提高效率 特别说明本文介绍的是Spring(import org.springframework.beans.BeanUtils)中的
目录 BeanUtils.copyProperties()拷贝id属性失败 部分代码如下 解决方法 BeanUtils.co
java对象复制或拷贝之BeanUtils.copyProperties() 用法,一行语句实现对象间快速复制 即 BeanUtils.copyProperties(源对象, 目标对象); 使用注意事
我有以下类(class): import org.apache.commons.beanutils.BeanUtils; import com.thoughtworks.xstream.XStream
我正在使用 BeanUtils.copyProperties 将一个对象的全部内容复制到从它继承的另一个对象中。 这里是上下文,从中复制值的域对象包含一组自定义类型 Xref 的对象。该自定义类型有一
我正在使用 commons-beanutils 1.8.3 和 Date 属性作为 java.util.Date。 当我尝试将源复制到目标时,它无法复制日期属性。 以下是我之前的问题,但是没有人给我正
我想将一个对象转换为另一个对象,为此我使用 Spring BeanUtils。但是 Bag 类型的属性“foo” (从 Hibernate 发出)被复制到 List 类型的目标对象中没有问题。 使用相
我正在使用 PropertyUtils.copyProperties()通过反射复制对象的属性,它曾经工作得很好。然而最近,它开始无所事事。 它不会抛出异常,但不会复制任何字段。尽管源对象中有非空字段
为了测试这一点,我迅速做出了以下: public class Test { public static void main(String[] args) { try { Employee e
我知道 BeanUtils 可以将单个对象复制到其他对象。 是否可以复制数组列表。 例如: FromBean fromBean = new FromBean("fromBean", "fromBea
我正在尝试将属性从一个 bean 复制到另一个。下面是两个 bean 的签名: 搜索内容: public class SearchContent implements Serializable {
前言 BeanUtils.copyProperties十有八九是你这些年工作中用的很多的其中一个,不管是Apache的还是Spring的。 网上的解释浩如烟海,我这边用一
dto 对象: public class DTOUser implements UserDetails { /** * */ private static final long serialVer
如何关闭 BeanUtils.copyProperties 的日志记录?它会创建过多的日志并妨碍日志文件的可读性。谢谢堆.. 示例代码 BeanUtils.copyProperties(someDat
springframework.beans.BeanUtils 对于复制对象非常有用,我经常使用“ignoreProperties”选项。但是,有时我只想复制特定的对象(基本上,与“忽略属性”相反)。
有没有办法让 BeanUtils 使用 protected setXXX(X x) 方法?或者您知道执行此操作的其他方法吗? 类似于: public class A{ private Stri
我有一个数字数据库字段(SQL Server 2000 中的 numeric(3))允许空值,而空值是我首选的“无值”值。 该字段映射到非原始 java Long Hibernate 中的类: 字段
我已在 的帮助下将一个对象复制到另一个对象中 BeanUtils.CopyProperties(Src,Dest); From : package org.springframework.beans;
我是一名优秀的程序员,十分优秀!