인프런 커뮤니티 질문&답변

종이개구리님의 프로필 이미지
종이개구리

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

정리

검증 처리의 위치와 서비스 단계에서 validator처리 문제점

작성

·

946

3

안녕하세요 김영한 은사님, 강의 열심히 잘 보고 있습니다.
다름 아닌 개인 프로젝트 중 궁금한 질문이 생겨서 다음과 같이 남깁니다.

Q1. 검증의 처리는 컨트롤러 or 서비스 단계 중 어디서 하는 것이 적당한가요? 구글링 결과 다 상황에 따라 다르다는 답변을 들었습니다. 그러나 실무 경험이 풍부한 김영한 강사님과 다른 수강생들의 의견이 궁금합니다. 만약 상황에 따라 다른 단계에 구현한다면 그에 따른 유지보수 문제는 감수하고 가는게 맞나요?

Q2. 저는 재활용성을 우선시하여 서비스 단계에서 validator 를 주입하여 처리하고 있습니다. 그런데 binding result를 어떻게 처리해야할 지 모르겠습니다.
물론 커스텀 에노테이션, bean validation을 사용하면 된다는 것을 알고 있습니다. 그러나 아직은 공부 단계이므로 validator을 통해서만 해결해보고 싶은데 방법이 있을까요?

public String join(@ModelAttribute("member") MemberSaveForm memberForm,BindingResult bindingResult) {
        Member saveMember = new Member(memberForm);

        //아래와 같은 부적절한 코드 발생
        bindingResult = memberService.join(saveMember, bindingResult);
        //서비스의 메소드 파라미터로 bindingResult를 넣고 그 메소드내에서 검증 처리 후
        // 에러를 주입해서 다시 돌려주는 코드

        if (bindingResult.hasErrors()) {
            return "/user/join";
        }
    }

답변 1

3

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 종이개구리님

Q1. 다음을 참고해주세요.

https://www.inflearn.com/questions/277568

Q2. BindingResult는 컨트롤러 계층에서만 사용해야 합니다.

서비스 계층에서 예외를 발생시키고 컨트롤러에서 해당 예외를 잡아서 BindingResult에 적절한 오류를 넣어주시면 됩니다.

감사합니다.

감사합니다. 예외처리에 약하고 기피하다 보니 생각도 못한 것 같습니다. 감사합니다!!

종이개구리님의 프로필 이미지
종이개구리

작성한 질문수

질문하기