志不强者智不达。——《墨子·修身》
今天使用org.springframework.cglib.beans.BeanCopier
时遇到一个坑
这里记录一下
BeanCopier
用于拷贝属性,详情可以看mofan
的博客,写的很详细了
我们这里写两个对象用于测试
@Data @Builder @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor public static class Monkey { private String name; private Integer age; }
@Data @Builder @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor public static class Cat { private String name; private Integer age; }
|
我们测试一下
public static void main(String[] args) { BeanCopier beanCopier = BeanCopier.create(Monkey.class, Cat.class, false); Monkey monkey = Monkey.builder().name("ruben").age(12).build(); Cat cat = Cat.builder().build(); beanCopier.copy(monkey, cat, null); System.out.println(cat); }
|
可以看到输出结果,我们成功把Monkey
对象里的值拷贝到Cat
中去了
![image-20210420205540345](https://waibi.oss-cn-chengdu.aliyuncs.com/picGo/image-20210420205540345.png)
但如果我们在Cat
加入了链式
@Data @Builder @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) public static class Cat { private String name; private Integer age; }
|
我们再次运行
![image-20210420205608789](https://waibi.oss-cn-chengdu.aliyuncs.com/picGo/image-20210420205608789.png)
可以看到我们的Monkey
对象里的值没有拷贝到Cat
里去
所以这个坑就是
BeanCopier拷贝属性,不支持链式编程!!!