일하다가 dto 복사할일이 생겨서 방법을 두가지 생각해봤다.
예제는 dto의 데이터 일부를 추출하여 toString으로 콘솔에 찍어보기다.
package dto.test;
public class DtoCopyTest {
public static void main(String[] args) {
MyDto dto = new MyDto();
dto.setId("20221208");
dto.setName("dev-jones");
dto.setBirthday("19900101");
MyDtoCopy dtoCopy = new MyDtoCopy(dto);
System.out.println(dtoCopy.toString());
}
}
class MyDto {
private String id;
private String name;
private String birthday;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
class MyDtoCopy {
MyDto dto;
public MyDtoCopy(MyDto dto) {
this.dto = dto;
}
@Override
public String toString() {
return "출력데이터: [name=" + dto.getName() + "], [birthday=" + dto.getBirthday() + "]";
}
}
결과:
출력데이터: [name=dev-jones], [birthday=19900101]
Copy클래스의 필드로 지정하고 생성시 카피가 되도록 진행했다.
다음은 BeanUtils.copyProperties를 이용한 예제이다.
package dto.test;
public class DtoCopyTest1 {
public static void main(String[] args) {
YourDto dto = new YourDto();
dto.setId("20221208");
dto.setName("dev-jones");
dto.setBirthday("19900101");
YourDto dtoCopy = new YourDtoCopy();
BeanUtils.copyProperties(dto, dtoCopy);
System.out.println(dtoCopy.toString());
}
}
class YourDto {
protected String id;
protected String name;
protected String birthday;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
class YourDtoCopy extends YourDto {
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("YourDtoCopy{");
sb.append("name='").append(name).append('\'');
sb.append(", birthday='").append(birthday).append('\'');
sb.append('}');
return sb.toString();
}
}
결과는 동일하다.
'자바' 카테고리의 다른 글
[자바] Stream의 match함수 예제(anyMatch, noneMatch, allMatch) (0) | 2024.01.10 |
---|---|
어댑터 패턴 (0) | 2022.12.14 |
[스레드] 12. 스레드풀(3) (0) | 2022.05.07 |
[스레드] 11. 스레드풀(2) (0) | 2022.05.05 |
[스레드] 10. 스레드풀(1) ExecutorService (0) | 2022.05.01 |