DTO를 안전하게 사용하자
- setter 를 없애고 생성자를 이용하여 set한다.
- 개발자가 의도적으로 new로 인스턴스를 생성하지 않는 이상 계층간 이동시 데이터가 변조될 위험이 없다.
코드예시 :
- DTO
public class UserDto {
private final String name;
private final Integer age;
// setter를 없애고 생성자로 데이터를 초기화 해서 계층간에 DTO가 변조되지 않게 함
public UserDto(String newName, Integer newAge) {
this.name = newName;
this.age = newAge;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
}
- 보내는 곳
public class UserService {
// UserDto 객체를 리턴
public static UserDto createNewUser() {
//dto에 넣어서 보낼 데이터들을 정의
String newName = "홍길동";
Integer newAge = 20;
// 데이터를 전달하게 될 dto에 데이터를 set
// 생성자를 통해 값을 초기화 하기 때문에 UserDto 인자로 전달
UserDto userDto = new UserDto(newName, newAge);
return userDto;
}
}
- 받는 곳
public class UserController {
public String createNewUser() {
UserDto getUserDto = UserService.createNewUser();
String name = getUserDto.getName();
Integer age = getUserDto.getAge();
return name;
}
}
반응형
'Spring Boot' 카테고리의 다른 글
[Spring Boot] 프로젝트 실행 시 8080 was already in use 에러 (0) | 2021.10.16 |
---|---|
[Mapper] DTO와 Entity 의 매핑 개념 (0) | 2021.10.16 |
DTO vs VO (0) | 2021.10.16 |
IOC (제어의 역전) - 마틴 파울러 (0) | 2021.10.15 |
[JMeter] 제이미터 사용방법 (0) | 2021.06.22 |