志不强者智不达。——《墨子·修身》
今天使用org.springframework.cglib.beans.BeanCopier
时遇到一个坑
这里记录一下
BeanCopier
用于拷贝属性,详情可以看mofan
的博客,写的很详细了
我们这里写两个对象用于测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @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; }
|
我们测试一下
1 2 3 4 5 6 7
| 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
中去了
但如果我们在Cat
加入了链式
1 2 3 4 5 6 7 8 9 10
| @Data @Builder @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) public static class Cat { private String name; private Integer age; }
|
我们再次运行
可以看到我们的Monkey
对象里的值没有拷贝到Cat
里去
所以这个坑就是
BeanCopier拷贝属性,不支持链式编程!!!