작성
·
464
0
답변 1
2
안녕하세요, 0xe82de 님! 공식 서포터즈 codesweaver 입니다.
제 생각엔 컨트롤러에서 여러 서비스를호출하는 것은 괜찮지만 (말 그대로 흐름을 컨트롤 하는 역할)
검증에 대한 부분을 컨트롤러에서 처리하는것은 좋지 않습니다.
차라리 회원을 관리하는 서비스 객체에 '패스워드 유휴성 체크' 메서드가 있어서 이곳에서 회원 조회와 유효성 검사를 진행하고 이 결과를 boolean으로 받은다음, 다시 '패스워드 변경' 메서드를 호출하는 방법이 어떨가 생각합니다.
컨트롤러 코드가 아래와 비슷한 형태가 될 것 같습니다.
if (memberService.isValidPassword(params)) {
memberService.changePassword(params);
}
유효하지 않은 이메일일 때 오류를 내고 싶다면 아래처럼 될 것 같습니다.
if (!memberService.isValidPassword(params) {
throw new SomeException();
}
memberService.changePassword(params);
return "viewFile";
코드에는 정답은 없고, 필요에 따라 해답이 있을뿐이긴 하지만,
요점은, 컨트롤러는 서비스를 호출하는 것 외에 기능은 갖지 않는것이 좋다고 생각합니다.
감사합니다.
답변 감사드립니다! 한 가지 질문이 있습니다.
컨트롤러에서 memberService.isValidPassword(params)로 검증을 하고 통과하면 memberService.changePassword(params) 메서드를 호출할텐데요. 이 때 changePassword 메서드 내부에서 패스워드 유효성을 한 번 더 체크하는 것은 필요가 없을까요?