본문 바로가기

Null 안정성 확보 방법

@silver-w2025. 12. 19. 02:34

1) 설계단계 - 패키지 레벨 @NonNull

@NonNullApi
package dev.es.myasset.domain;

import org.springframework.lang.NonNullApi;

해당 패키지 안에서는 "기본적으로 Null을 안쓴다" 선언

  • 메서드 파라미터 / 반환값에 대해 의도적으로 명시
  • 설계 규칙 & 문서 역할을 한다
  • 규칙을 코드에 적어두는 것이므로 이 자체로만으론 규칙을 지키게 만드는 힘은 없다.

 

2) 빌드단계 - SpotBugs

plugins {
    id("com.github.spotbugs") version "6.4.8"
}
  • @NonNull @ Nullable 기반으로 코드를 분석해 계약 규칙 위반을 호출한다.
  • 빌드단계에서 규칙 위반을 실패로 만든다

 

3) 런타임 단계 - Objects.requireNonNull()

@Builder
public UserInfo(String username, Enum<ProviderType> providerType, String email) {
    this.username = Objects.requireNonNull(username, "username cannot be null");
    this.providerType = Objects.requireNonNull(providerType, "providerType cannot be null");
    this.email = Objects.requireNonNull(email, "email cannot be null");
}
  • 실행시점에 NonNull을 100% 보장
  • 실행되지 전까지는 모르므로 requireNonNull만으로는 배포 전 모두 방어가 사실상 불가

'JAVA > SPRING' 카테고리의 다른 글

@MapsId : Derived Identifier  (1) 2025.12.22
record class(JAVA)와 data class(Kotlin) 비교  (0) 2025.12.19
JPA 영속성(Persistence) 기초 정리  (1) 2025.11.25
파일 업로드  (0) 2025.11.23
Type Converter, Formatter  (0) 2025.11.22
silver-w
@silver-w :: silver-w 님의 블로그

silver-w 님의 블로그 입니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차