응용 서비스의 완성도를 위해 모든 검증을 응용 서비스에서 하면 좋다.
원칙적으로 모든 값에 대한 검증은 응용 서비스에서 처리한다.
표현 영역이 아닌 응용 서비스에서 값의 유효성 검사를 하게 되면 사용자에게 좋지 않은 경험을 제공한다.
물론 응용 서비스에서 예외 목록을 모아 한 번에 표현 영역으로 반환할 수 있다.
표현 영역에서 스프링 프레임워크의 Validation 기능을 이용해 간단하게 처리할 수도 있다.
표현 영역에서 필수 값과 형식을 검사하면 응용 서비스에서는 논리적 오류만 검사하면 된다.
- 표현 영역 - 필수 값, 값의 형식, 범위 등을 검증한다.
- 응용 서비스 - 데이터의 존재 유무와 같은 논리적 오류를 검증한다.
필자는 작성해야할 코드가 늘어나는 불편함이 있지만 응용 서비스의 완성도를 위해 응용 서비스에서 값 검증과 논리적인 검증을 모두한다.
스프링 프레임워크의 Validation 기능을 이용해 표현 영역에서 값 검증을 한 후 응용 서비스에서 논리적인 검증을 했었다.
필수 값, 형식, 범위 같이 사용자 요청 값 검증에 대한 예외는 응용 서비스까지 넘길 필요 없이 표현 영역에서 처리하는 것이 좋다고 생각했었다.
만약 표현 영역에서 예외 처리가 되지 않았다면 응용 서비스는 내가 생각한대로 작동하지 않을 수도 동작하지 않을 수도 있다.
필자의 의견처럼 모든 예외를 응용 서비스에서 처리해 완벽한 응용 서비스를 만드는 것도 좋은 방법이라고 생각한다.
스프링 프레임워크의 Validation 기능을 이용해 응용 서비스에서도 예외를 처리할 수 있기 때문에 직접 해보고 판단을 해야겠다.