对于字段名称与类型完全一样时,两者无区别。
对于字段名称相同,但是类型不一样(如int <=> Integer)时,BeanUtils拷贝,而BeanCopier不拷贝。
特别注意BeanUtils: 第一个字母不需要大小写之外,其他的部分是需要严格区分大小写的
public class A {
private String name ;
private Integer id ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public A(String name, Integer id) {
this.name = name;
this.id = id;
}
@Override
public String toString() {
return "A{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
}
public class B {
private String name ;
private int id ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public B(String name, int id) {
this.name = name;
this.id = id;
}
@Override
public String toString() {
return "B{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
}
import org.springframework.beans.BeanUtils;
public class CpTest {
public static void main(String[] args) {
A a = new A("a" , 1) ;
B b = new B("b" , 2) ;
BeanUtils.copyProperties(a , b) ;
System.out.println(b);
}
}
结果:B{name='a', id=1}
import org.springframework.cglib.beans.BeanCopier;
public class CpTest {
public static void main(String[] args) {
A a = new A("a" , 1) ;
B b = new B("b" , 2) ;
BeanCopier beanCopier = BeanCopier.create(A.class , B.class , false) ;
beanCopier.copy(a , b , null);
System.out.println(b);
}
}
结果:B{name='a', id=2}