Back/Spring Java

BeanUtils.copyProperties

밍꿔 2019. 12. 23. 10:27


반응형

 

 

Class간 property를 복사해야 할 경우. 

 

각 프로퍼티 별 setter를 나열하는 코드 보단. BeanUtils.copyProperties를 사용하면 훨씬 깔끔

 

하게 구현이 가능하다.

 

예를들어, 

 

@Data
@AllArgsConstructor
@NoArgsConstructor
class Person {
    private String name;
    private Integer id;
    private String address;
    private String phone;
}

Person person1 = new Person("test1", 1, "Seoul", "010-1234-1234");
Person person2 = new Person("test2", 2, "Incheon", "010-1234-1234");

// 변경 전
person2.setName(person1.getName());
person2.setAddress(person1.getAddress());
person2.setId(person1.getId());
person2.setPhone(person1.getPhone());
        
// 변경 후
BeanUtils.copyProperties(person1, person2);

 

변경 후 코드를 보면 훨씬 깔끔하게 수정된걸 볼 수 있다.

 

또, 특정 property에 대해 ignore를 하려고 한다면 

 

BeanUtils.copyProperties(person1, person2, "name", "phone");

 

위와 같이 ignore하고자 하는 property에 대해 매개변수로 입력해주면 된다.

 

 

그 이외의 BeanUtils에서 사용되는 유용한 메서드

 - findMethod

 - findDeclaredMethod

 - findPrimaryConstructor

 

 

반응형

'Back > Spring Java' 카테고리의 다른 글

Class Object Entity convert to Map  (0) 2020.01.14
JPA findAll Specification  (0) 2020.01.14
Blob형태의 이미지 파일 입출력  (0) 2019.12.19
Spring Security Login  (2) 2019.12.18
가변인자 Varargs  (0) 2019.12.18