[java] JSR 305을 활용한 메소드 파라미터 유효성 검사 방법

JSR 305은 자바 코드에서 메소드 파라미터의 유효성을 검사하여 코드의 신뢰성을 향상시키기 위한 라이브러리입니다. 이 표준은 메소드 파라미터의 유효성 검사를 간단하게 작성할 수 있는 어노테이션을 제공합니다.

1. JSR 305 라이브러리 추가하기

먼저, 프로젝트에 JSR 305 라이브러리를 추가해야 합니다. Maven이나 Gradle과 같은 빌드 도구를 사용할 경우, 해당 라이브러리를 dependencies에 추가하면 됩니다.

Maven:

<dependencies>
    <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.2</version>
    </dependency>
</dependencies>

Gradle:

dependencies {
    implementation 'com.google.code.findbugs:jsr305:3.0.2'
}

2. 메소드 파라미터 유효성 검사 어노테이션 사용하기

JSR 305에서 제공하는 어노테이션 중에서 @NonNull, @Nullable, @CheckForNull, @CheckForSigned 등을 사용하여 메소드 파라미터의 유효성을 검사할 수 있습니다. 이러한 어노테이션을 사용하면 컴파일러가 해당 파라미터에 대한 경고나 오류를 표시하게 됩니다.

예를 들어, 다음과 같은 메소드가 있다고 가정해봅시다.

public void processUser(String username) {
    // 사용자 정보 처리 로직
}

이 메소드에서 username 파라미터는 반드시 null이 아니어야 한다는 조건을 추가하고 싶을 경우, @NonNull 어노테이션을 사용하여 다음과 같이 코드를 변경할 수 있습니다.

public void processUser(@NonNull String username) {
    // 사용자 정보 처리 로직
}

이제 컴파일 시에 username 파라미터가 null일 경우에 대한 경고나 오류를 확인할 수 있습니다.

3. 메소드 파라미터 유효성 검사의 장점

메소드 파라미터 유효성 검사를 통해 코드의 신뢰성을 향상시킬 수 있습니다. 예외 상황에서 불필요한 버그를 예방하거나, 코드 리뷰 과정에서 누락된 유효성 검사를 찾아낼 수 있습니다. 또한, 이러한 어노테이션을 사용하여 문서화된 메소드 규약을 강제로 지킬 수 있습니다.

하지만, JSR 305 어노테이션은 컴파일러에게만 영향을 주는 정적 검사 도구이므로, 런타임 시 NullPointerException 등의 예외를 완전히 예방할 수는 없습니다. 따라서, 이러한 어노테이션을 사용함으로써 반드시 모든 예외 상황을 방어할 수 있다고 믿지는 않아야 합니다.

4. 참고 자료