작성
·
52
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
DTO를 사용할 때 Spring의 검증 에러 메시지에 대한 질문을 주셨네요. 질문을 보니 검증 에러 발생 시, 어떤 이름으로 에러 메시지가 매핑되는지에 대해 고민 중이신 것 같습니다. Spring MVC에서의 검증 메시지는 BindingResult
에 담긴 에러 코드와 연관이 있습니다. 코드 분석을 통해 해당 매핑이 이루어지게 됩니다.
Spring에서는 기본적으로 객체의 클래스 이름을 기준으로 에러 코드를 구성합니다. 예를 들어, @NotNull
검증 어노테이션을 사용하면 NotNull.[클래스 이름].[필드 이름]
이라는 패턴을 따르는 기본 에러 코드가 생성됩니다. ItemDto
클래스의 경우, Spring은 해당 객체의 클래스 이름인 ItemDto
를 사용하여 에러 코드를 생성하고자 하지만, 말씀하신 대로 item
으로 등록된 이유는 다음과 같습니다:
Controller에서 객체를 받은 후, 실제로 검증 시 Spring이 item
이라고 지정한 이유는 컨트롤러에서의 @ModelAttribute
나 다른 컴포넌트에서 이러한 이름을 명시적으로 지정했을 가능성이 큽니다.
Spring이 실제로는 DTO 객체를 감싸는 외부 ModelAttribute
이름을 사용하거나, 보다 직관적인 이름으로 Default를 설정했을 수 있습니다.
다음은 이와 유사한 질문과 답변이 있는 링크입니다. 참고하시면 도움이 될 것 같습니다:
만약 더 깊이 있는 이해를 원하신다면 소스 코드나 설정을 직접 검토하시는 것이 좋겠습니다. 직접 설정한 부분이 있는지, 메서드 레벨에서의 설정이 있는지 확인해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.