inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

정리

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

1092

종이개구리

작성한 질문수 2

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";
        }
    }

spring validator MVC validation 검증

답변 1

3

김영한

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

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

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

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

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

감사합니다.

0

종이개구리

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

이미지 업로드와 db 트랜잭션 묶는법

0

61

1

Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4

0

81

2

MessageSourceTest 코드

0

60

1

인터셉터 에러 설정

0

62

1

resolveArgument()메서드 질문

0

67

1

43강 검증1 에서 실패 로직 관련 질문있습니다.

0

73

2

타임리프 3.X 버전 rendering, serializer 에러 해결 방법

2

145

3

스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ

0

108

3

pdf 오타 문의

0

63

1

ItemUpdateForm 검증 관련 질문입니다.

0

56

1

22page 링크 주소 변경

0

62

2

특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문

0

58

1

섹션3번 수업에 대한 질문입니다.

0

91

2

@Autowired 보다 더 좋은 방법이 어떤 걸까요?

0

93

2

타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.

0

75

1

자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다

0

155

3

스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문

0

71

1

톰캣 에러 페이지가 안보입니다.

0

113

2

apiEceptionController에서 센드 에러 호출하면 안되는지?

0

86

1

세션 타임아웃시 쿠키 삭제 방법이 없나요?

0

131

2

ApiExceptionController 질문드립니다.

0

71

1

셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?

0

68

1

MemberRepository 필드의 fianl 선언 유무

0

90

2

혹시 index.html 에서는 fragment 사용이 안되는건가요

0

63

1