StringUtils.equals()
메서드를 사용하면 두개의 문자열을 비교하여 동일한 문자면 true
를 다른 문자면 false
를 반환한다. 또한 중요한 특징은 null은 예외없이 처리된다. 즉 값이 null일 경우 npe
가 발생하지않고 null을 반환한다.
String str1 = "Hello";
String str2 = "Hello";
System.out.println(StringUtils.equals(str1, str2); //true 반환
String str3 = "Hello!";
String str4 = "Hello~!";
System.out.println(StringUtils.equals(str3, str4); //false 반환
System.out.println(StringUtils.equals(null, null); //null도 비교 가능
Java String 클래스 자체적으로 지원하는 equals() 메서드도 있다.
그러나 만약 변수애 null값이 들어간다면 NullPointerException
이 발생한다.
따라서 StringUtils.equals()
사용하는것이 안전하다.
String str1 = null;
String str2 = "Hello~!";
//String 자체 equals() 사용 시 NullPointerException 발생
str1.equals(str2)
//StringUtils.equals() 사용 시 정상 처리
StringUtils.equals(str1, str2);
프로젝트에 적용시켜보자.
if (savedCode != null && savedCode.equals(verificationCode)) {
redisTemplate.delete(key);
} else {
throw new SmRequestException(ReturnCode.VERIFICATIONCODE_NOT_VALID);
}
해당 코드를 StringUtils.equals()로 리팩토링 해보자.
먼저 build.gradle
에 의존관계추가
implementation 'org.apache.commons:commons-lang3:3.12.0'
리팩토링 후
if (StringUtils.equals(savedCode, verificationCode)) {
redisTemplate.delete(key);
} else {
throw new SmRequestException(ReturnCode.VERIFICATIONCODE_NOT_VALID);
}