Spring Boot
[DTO] 를 더욱 안전하게 사용하는 방법
먹세
2021. 10. 16. 09:20
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;
}
}
반응형