개요
서버 단 코드를 구현할 때 null 처리를 미리 해주는 것이 중요하다. 특히 요청과 응답에 대한 코드를 모두 작성하면서, 서버 개발자가 미리 null 처리를 잘 해주면 불필요한 트랜잭션을 막을 수 있음을 알게 되었다. 또한 null이 들어오면 안 되는 상황에서 null을 활용함으로써 적절한 예외 처리를 할 수 있고, 버그를 방지할 수 있다.
굳이 강조하지 않아도 기본적으로 중요한 null 처리, java spring 개발자는 이 널 처리를 어떻게 하면 좋을까?
Stringutils
문서 를 확인해보면 Stringutils는 spring framework에서 제공하는 String 타입에 대한 메소드다.
isEmpty, hasLength등 주요 메서드가 많지만, 널 처리를 위한 hasText에 대해 구체적으로 알아보자.
StringUtils.hasText의 정의
1) ChatSequence에 대한 null 검사
public static boolean hasText(@Nullable CharSequence str)
2) String에 대한 null 검사
public static boolean hasText(@Nullable String str)
StringUtils.hasText의 특징
- 파라미터는 String으로, null이 아니라면 true를 반환한다.
- 이때, null로 처리되는 경우는 다음과 같다.
- 문자열의 길이가 1보다 작은 경우. 즉, 공백 체크
- 값이 null인 경우
StringUtils.hasText(null) // false
StringUtils.hasText("") // false
StringUtils.hasText(" ") // false
StringUtils.hasText("123") // true
StringUtils.hasText(" 12345 ") // true
위 예시를 통해 알 수 있듯, hasText는 좀 더 확실한 null 검증이 가능하다. isEmpty같은 경우는 빈 문자열 공백을 처리하지는 못한다. 따라서 위의 예시 3번과 같은 값은 IsEmpty를 사용하면 true를 반환할 것이다. 또한 isEmpty()는 현재 Deprecated 되어서 사용하지 않는 것을 권장한다.
실사용 예시
간단하게 null 처리를 하라고 하면 다음과 같이 작성할 수 있다.
if (entity.getStatus() == null) {
return;
}
하지만 앞으로는 hasText를 활용하여 좀 더 확실한 null 처리를 하도록 하자.
if (!StringUtils.hasText(entity.getStatus())) {
// 예외처리
return;
}
'Dev > Spring & JPA' 카테고리의 다른 글
[Spring] 처리율 제한(Rate Limit)으로 악의적인 공격 차단하기 (0) | 2024.11.23 |
---|---|
[Spring] HTTP Request Client(webclient, feignclient) (10) | 2024.11.10 |
[spring] @Async와 SimpleAsyncTaskExecutor, TaskExecutor 그리고 thread pool (0) | 2023.10.11 |
[Backend] 객체 지향 특징 | 다형성 | 좋은 객체 지향 설계 5 가지 원칙(SOLID) | EJB (0) | 2023.07.19 |