[Spring] Assert를 사용한 검증

민정·2023년 5월 29일
1

Spring

목록 보기
1/1

Assert

사용 목적

  • Spring Assert는 인수를 검증하고 조건에 맞지 않는 경우 IllegalArgumentException 또는 IllegalStateException를 발생
  • 조건문을 단순화하고 반복적인 코드를 줄이는 역할

Assert 사용했을 때와 안했을 때 비교

Assert 사용 X

if(user == null){
	throw new IllegalArgumentException("사용자 정보가 존재하지 않습니다.");
}

Assert 사용 O

Assert.notEmpty(user, "사용자 정보가 존재하지 않습니다.");

종류

공식 문서

함수설명
doesNotContain해당 문자열안에 subString이 포함되어있다면 ERROR
hasLengthnull이 아니고 비어있는 문자열("")이 아니어야함
hasTextnull이 아니고 공백이 아닌 유효한 문자가 존재하는 문자열이어야함
isTrue해당 조건식이 참이면 OK
isNull해당 객체가 null이면 OK
notNull해당 객체가 not null이면 OK
notEmpty해당 Array가 null이 아니고, 1개 이상의 Element를 가지고 있다면 OK
noNullElements해당 Array에 null인 객체가 없다면 OK
state해당 조건식이 참이면 OK
  • doesNotContain
        Assert.doesNotContain("반가워요", "안녕", "'안녕'이라는 문자열이 포함되어 있지 않아야합니다."); // OK
        Assert.doesNotContain("안녕하세요", "안녕", "'안녕'이라는 문자열이 포함되어 있지 않아야합니다."); // ERROR
  • hasLength, hasText
        //hasLength : null이 아니고, 빈 문자열("")이 아니어야함
        //hasText : null이 아니고, 1개 이상의 공백이 아닌 유효한 character가 존재해야함
        Assert.hasLength("", "문자열의 길이가 0이상이어야합니다."); // ERROR
        Assert.hasLength(" ", "문자열의 길이가 0이상이어야합니다."); // OK
        
        Assert.hasLength("", "문자열의 길이가 0이상이어야합니다."); // ERROR
        Assert.hasText("   ", "문자열은 필수입니다."); // ERROR
  • isTrue, isNull, notNull
        Long id =1L;
        Assert.isTrue(id == null, "Id는 미리 초기화되어있어야합니다."); // ERROR
        Assert.isNull(id, "Id는 미리 초기화되어있어야합니다.");// ERROR
        Assert.notNull(id, "Id는 미리 초기화되어있어야합니다."); // O
  • notEmpty, noNullElements
        ArrayList<Integer> array = new ArrayList<>();
        Assert.notEmpty(array, "Array는 비어있으면 안됩니다."); // ERROR
        array.add(1);
        array.add(2);
        Assert.notEmpty(array, "Array는 비어있으면 안됩니다."); //OK

        Assert.noNullElements(array, "Array안에 Null이 있으면 안됩니다."); // OK
        array.add(null);
        System.out.println("array = " + array);
        Assert.noNullElements(array, "Array안에 Null이 있으면 안됩니다."); // ERROR
  • state
       int a, b;
        a = 5; b = 3;
        Assert.state(a > b, "a는 b보다 커야합니다."); // OK

        a = 3; b = 5;
        Assert.state(a > b, "a는 b보다 커야합니다."); // ERROR

더 나아가서

  • 하나의 프로젝트에서 자주 쓰이는 검증로직들을 재사용할 수 있도록 Assert를 extends 받아 사용자 정의 Assert class를 생성해 사용할 수 있다.
    • 참고 블로그 참고!!

참고 블로그

0개의 댓글