이 애노테이션을 validate할 때사용하기 때문에 validateBy에 ConstraintValidator을 상속 받은 클래스를 넣어준다.여기서 2개의 인자를 받아야하므로 first(), second()를 넣어주고, message()로 에러 메세지를 위해 넣어준다 -> default로 값을 넣어줄 수 있음ConstraintValidator를 재정의
상속받은 class -> FieldMatchValidator을 만들고 generic을 해당 애노테이션을 넣어준다.2개의 String 값을 비교하는 로직을 설정해놓는다.실패시 에러 메시지와 검증한 결과를 ConstraintValidatorContext에 넘겨준다. 그리고 ErrorReponse의 error[].field에 바인되어 사용한다.실패 했기때문에 다음 validate 검사를 하는 추가적인 로직 수행을 막기 위해 disableDefaultConstraintViolation()을 추가 해줬다.삽질
- 애노테이션에 대해 이해를 잘 못하여서 RUNTIME을 Retention으로 설정하지 않았었다 구글 검색 하여서 왜 이렇게 되는지를 검색하였고 결과적으로 위와 같은 정보를 얻게 되었다.
- 굳이 List 만들 이유가 없었는데 만든거 같아서 조금 아쉽다....