✏️ 오류코드의 트레이트 오프
- 오류코드를 너무 세밀하게 정리하면 클라이언트에게 디테일한 메시지를 전달할 수 있지만 범용성이 낮아진다.
- 반대로 단순하게 정리하면 범용성이 좋아 여러곳에서 사용할 수 있지만,
메시지를 세밀하게 작성하기 어려워진다.
📍 해결방법
- 실무에서는 기본적으로 단순하게 메시지를 정리하다가,
세밀하게 작성해야 될 경우 단계적으로 작성하는 방법을 사용한다.
✏️ 오류 코드 설계
required=필수 값 입니다.
- 나중에 기존 메시지보다 세밀한 메시지가 필요할경우 level 을 낮춰준다.
- 이런식으로 단계별로 세밀한 정도를 높혀갈 수 있도록 설계한다.
- rejectValue 는 매개변수를 기반으로 저장된 메시지의 오류코드중 가장 세밀한 오류코드를 실행시킨다.
required=필수 값 입니다.
required.item=상품이 입력되지 않았습니다.
required.user=이름입력되지 않았습니다.
required.item.itemName=상품 이름이 입력되지 않았습니다.
required.item.price=상품 가격이 입력되지 않았습니다.
- Controller 에서는
required
로 오류코드를 설정해둘경우
별도의 Controller 로직 수정 없이
세밀한 코드가 있으면 세밀한 코드로, 세밀한 코드가 없다면 단순한 코드로 MessageCodesResolver
가 자동으로 코드를 완성시켜준다.
🔗 메시지 코드 리졸버
bindingResult.rejectValue("itemName", "required");