일친 (IlChin) - Request 필드 중 null 값 체크 메서드 만들기

no.oneho·2025년 6월 4일
0

일친 개발기

목록 보기
15/17

Dto 단계에서 validation으로 걸 수도 있지만 그렇게 해버리면 유효성 검증이 dto에 너무 의존하여 dto를 재사용할 때 번거롭거나 새로 만들어야 할 수도 있을 것 같았다.

그래서 유틸메서드로 하나 만들어서 사용하도록 해보겠다.

    public static boolean areFieldsNotNullOrEmpty(Object obj, String... fields) {
        try {
            for (String field : fields) {
                Field field1 = obj.getClass().getDeclaredField(field);
                field1.setAccessible(true);
                Object value = field1.get(obj);
                if (value == null) {
                    return false;
                }
                if (value instanceof String && ((String) value).trim().isEmpty()) {
                    return false;
                }

            }
        } catch (NoSuchFieldException | IllegalAccessException e) {
            throw new RuntimeException(e);
        }
        return true;
    }

이것이 null 값이나 빈칸에 대한 검증 메서드이다.

자바 Reflection을 사용하여 만들었으며
필드 이름을 문자열로 여러개를 받아 하나하나 검증하는 메서드이다.
obj.getClass().getDeclaredField(fieldName)를 통해 obj 안에 해당 메서드 이름이 존재하면 null 값을 체크하고, 이름 자체가 존재하지 않는 메서드라면 catch로 넘어가게 된다.

이는 서버개발자의 실수일 경우가 대다수라 runtimeException으로 빼고 해당 예외는 advice를 통해 500에러로 빠진다.

아무튼 실제 사용 예시를 보면

if(!Api.areFieldsNotNullOrEmpty(patchUserReq, "email", "fullName", "phoneNumber")) {
            throw new CustomException(UserException.BAD_REQUEST_PATCH);
        }

이런식으로 사용할 수 있다. 이렇게 해두면 null 값 검증이 필요한 필드만 예외처리를 따로 할 수 있어 간편하게 사용할 수 있을 것 같다.

profile
이렇게 짜면 요구사항이나 기획이 변경됐을 때 불편하지 않을까? 라는 생각부터 시작해 설계를 해나가는 개발자

0개의 댓글