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;
	}
}
반응형