inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 기반 REST API 개발

Bad Request 처리

EventValidator 질문이 있습니다.

258

조재연

작성한 질문수 47

0

안녕하세요.

다름이 아니라 EventValidator 에서 implement Validator 를 쓰는것과 안쓰는것 차이를 잘 모르겠습니다.

 

감합니다.

spring java rest-api

답변 1

2

백기선

안녕하세요. 좋은 질문 감사합니다.

Validator 인터페이스 규약을 따를 것인가(A) 아니면 커스텀한 Validator를 만들것인가(B) 차이가 있습니다. A를 선택한다면 인터페이스에 따라 validate()와 support()를 구현해야 합니다. 어느 한 종류(또는 그 하위 타입)에 대한 검증 메소드 진입점이 하나 뿐입니다. B는 얼마든지 마음대로 설계할 수 있습니다. 원한다면 여러 타입에 대한 검증을 지원할 수도 있고, 검증용 메소드도 여러개를 만들어 쓸 수 있죠.

A를 선택했을 때의 장점은 스프링 기반 시설에서 정해둔 규약이라, 스프링 프레임워크가 제공하는 인프라에 연동해서 사용할 용도라면 A를 선택하는게 좋을 겁니다. 가령 WebDataBinder에 Validator를 등록해서 쓸 수 있는데 그렇게 해두면 B를 사용할 때와는 달리 명시적으로 validator를 호출하지 않더라도 스프링 MVC 내부에서 바이딩한 이후에 WebDataBinder에 등록되어있는 검증기를 적용해서 검증 처리를 해줍니다. 대신 그만큼 정해진 규칙에 따르고 해당 규칙대로 동작하리라는 것을 이해하고 있어야 그렇게 암묵적으로 또는 자동적으로 처리되는 로직을 잘 활용할 수 있겠죠.

B를 선택했을 때는 우리가 직접 컨트롤 해야 합니다. WebDataBinder에 등록해서 쓰는게 아니라, 의존성 주입으로 Validator를 주입받아서 직접 검증이 필요한 순간에 코딩을 해서 Validator를 써야 하는거죠. 저는 이 방법도 선호하는데, 무엇보다 "명시적"으로 언제 어느 메소드를 사용해서 검증을 하는지 코드가 잘 보이기 때문이죠.

A랑 B랑 분명히 기술적인 차이가 있지만 어느것이 어느것보다 나은 선택이다 그런건 없습니다. 상황이나 취향에 맞게 쓰시면 됩니다.

감사합니다.

0

조재연

자세한 설명 감사합니다~

Spring 시큐리티 관련해서 WebSecurityConfigurationAdapter

0

79

1

junit5 사용하시는 분들

0

92

1

자바 빈 스펙을 준수하는지 체크하는 테스트

0

247

2

REST API 개발 중 비즈니스 로직 적용 부분의 JSON 에러

0

251

1

스프링 부트 3버전에서의 실습

0

192

1

java.lang.AssertionError: Status

0

534

2

spring doc 관련 파일 생성 관련 배포 관련 질문 드립니다.

0

289

1

섹션2 201응답받기 부분 테스트 404에러 질문입니다

0

742

1

강의 자료가 404입니다 확인 부탁 드려요!

0

477

1

연동 DB문의

0

364

1

이벤트 Repository강의 중 Event 클래스에 private Integer Id; 위치 질문

0

507

1

(Mac) postgressql 관련하여 port kill 해도 다시 살아나는 경우

0

382

0

maven으로 생성한 docs파일(index.html)에서의 not found 오류 질문

0

628

1

테스트 오류 질문드립니다.

0

513

1

docs 요청값이 반영이 안되네요... (해결)

-1

396

1

psql 적용 후 에러

0

820

2

mvn package 시 다음과 같은 에러가 나시면

0

767

2

Event에 Account manager를 추가했으면 문서화 필요

0

274

1

2년 훨씬 전 부터 Restlet-> Talend API 로 바뀌었습니다~

1

473

1

asciidoc 추가 스니펫 에러 해결법

0

402

1

_links 는 현재 fieldWithPath 를 해주지 않아도 됩니다.

0

428

3

깃랩 처음 사용자를 위한 index.adoc raw 보는 법

0

335

1

eclipse 쓰시는 분을 위한 maven-resources-plugin 팁

0

338

1

부트 + jupiter 인 경우 설정법

0

344

1