MessageSourceResolvable이 후보와 argument를 함께 전달한다

첫 code만 직접 꺼내지 않고 FieldError가 가진 전체 후보와 argument를 MessageSource가 locale bundle에 순서대로 대조한다.

01 · FIELD ERROR

Codes + arguments

구체→공통 후보 배열과 rejected context를 가진다.

02 · RESOLVABLE

해석 계약

후보·argument·default message를 한 객체로 전달한다.

03 · MESSAGE SOURCE

순서대로 조회

현재 locale bundle에서 첫 일치 code를 찾는다.

04 · FORMAT

Argument 적용

선택한 문장 형식에 동적 값을 안전하게 넣는다.

05 · VIEW

Locale 문장

내부 후보 배열 대신 최종 사용자 문구만 표시한다.

핵심: Resolvable을 그대로 넘겨야 Spring이 만든 구체성 순서와 locale별 argument 해석을 잃지 않는다.