본문 바로가기

개발

validation 기능 구현 - 1 (T-001)

반응형

주의

이 시리즈는 일주일 조금 넘는 기간 동안 블로그 주인이 밤새 작업하면서 쓰는 글입니다 정확하지 않은 내용이 포함 될 수 있고, 끝내지 못 할 수 있습니다

 

프론트쪽에서 입력한 폼정보가 백엔드로 넘어 왔을 때, 우리는 특정한 객체에 해당 정보를 담아 받아 볼 수 있습니다

이때 사용하는 객체를 커맨드 객체라 부르고 이번 시리즈에서는 이 커맨드 객체를 validation해보도록 하겠습니다

 

아래와 같은 작업을 진행하면 쉽게 문제를 해결 할 수 있습니다

1. 커맨드 객체를 제작

2. 해당 커맨드 객체를 validate할 validator 객체를 생성, 스프링 validator를 implements 합니다

 

이때 오버라이드하는 메소드는 총 2가지 입니다

1. supports 메소드

이미 우리는 바로 전 시리즈인 하이버네이트 타입 커스텀하기에서 이와 비슷한 메소드를 다뤘습니다

    @Override
    public boolean supports(Class<?> cls) {
        return cls.isAssignableFrom(폼클래스의이름.class);
    }

isAssinableFrom이랑 instanceOf 이 두가지 메소드가 조금 헷갈릴 수 있는데, 이 링크에서 알아보겠습니다(추가 예정)

이 두가지는 타입을 wrap, unwrap할 때 아주 중요하게 사용됩니다

 

2. validate

여기서는 파라미터로 validate 하려는 객체와 Errors라는 아주 성가신 스프링 인터페이스 하나를 받고있습니다

validate 로직을 알맞게 생성해 주시고 만약에 invalid하다면 이 Errors라는 객체에 해당 내용을 형식에 맞게 입력해주면 됩니다

 

참고 문헌

 

테스트 방법

https://stackoverflow.com/questions/9744988/writing-junit-tests-for-spring-validator-implementation

 

 

validation

https://meetup.toast.com/posts/223

반응형