inflearn logo
강의

講義

知識共有

トビーのクリーン・スプリング - ドメインモデルパターンとヘキサゴナルアーキテクチャ Part 1

スプリングを利用したナル(null)安定性確保

NonNullApi를 NullMarked로 대체하라고 합니다.

120

Gomgomi

投稿した質問数 5

0

spring 7 버전에서 부터는 NonNullAPI이 deprecated 되는 것 같습니다.

대신 NullMarked로 대체하면 된다고 합니다!

image.png


java spring spring-boot jpa 리팩터링 ddd

回答 2

0

tobyilee

안녕하세요.

말씀하신 것처럼 스프링 7부터는 null 체크에 사용되는 기술이 변경되었습니다.

강의에서는 당시 스프링 6까지 사용하뎐 스프링 자체 애노테이션을 사용했습니다. 그런데 7에서는 기존 스프링 자체 애노테이션을 deprecated로 바꾸고, JSpecify라는 여러 벤더와 프로젝트에서 적극 채용하고 있는 방식을 사용하는 것으로 정책을 변경했습니다. 여러 도구와 벤더들이 수용한 JSpecify가 가지는 여러 장점을 수용하고, 특히 Kotlin과 경계에서 null 안정성을 대폭 개선하게 되었습니다.

클린 스프링은 두 번째 주제를 다룰 때 스프링 7로 업데이트 할 계획을 가지고 있습니다(첫번째 강의의 Part 2까지는 스프링 6를 사용합니다). 그때 null을 다루는 새로운 방법도 적용해보겠습니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
Hi y님께서 언급하신 내용은 Spring 7 버전부터 NonNullApi가 deprecated 되고, 대신 NullMarked를 사용하도록 권장된다는 것입니다.

Spring Framework에서 NonNullApi는 패키지 레벨에서 기본적으로 메서드와 파라미터를 non-null로 선언하는 데 사용되었습니다. 하지만 7.0 버전부터는 이 기능이 deprecated되었고, org.jspecify.annotations.NullMarked를 사용해서 같은 기능을 대체할 수 있습니다.

이를 통해, NullMarked는 기본적인 null 안전성을 제공하며, 패키지 레벨에서 nullability를 관리하는데 적합합니다. 이 방법은 기본적으로 모든 메서드와 파라미터가 non-null으로 간주하게 하며, 필요한 경우 Nullable을 사용해서 예외를 처리할 수 있습니다.

관련 링크들을 참고하시어, 코드를 업데이트하시면 도움이 될 것입니다.
- Deprecation 관련: JSpecify nullness annotations
- Kotlin의 null-safety: Kotlin null-safety

더 궁금한 점이 있으면 언제든지 질문 주세요!

도메인 모델에서 관계와 규칙을 구분하는 방법

0

32

2

헥사고날 아키텍처에서의 배치, 시큐리티, 비동기 이벤트 처리는 어떻게 하나요?

0

108

2

어댑터에서 도메인에 직접 의존하는 경우에 대해

0

110

2

Member 도메인이 PasswordEncoder를 받는 구조 질문 있습니다.

0

98

2

MemberService와 EmailSender 책임 분리에 대한 질문

0

99

2

39. 문서와 코드 다듬기 updateInfo 테스트 질문 있습니다.

0

69

2

Repository Adapter 설계에 대해 피드백을 부탁드립니다

0

102

2

헥사고날 part2 강의 출시 예정일 문의 드립니다.

0

242

2

PT 문의사항

0

94

1

초기 어플리케이션 구동 시 compose.yml 파싱 오류

0

145

2

애플리케이션의 JPA 리턴과 도메인 모델

0

123

2

애그리거트 루트의 하위 도메인들의 depth가 깊어질 때 문의

0

131

2

페이징 처리를 해야한다면 어떻게 해야할까요?

0

184

2

애그리거트의 repository

0

114

2

Domain Expert가 정확히 어떤 역할을 하는 사람인가요?

0

224

1

회원 애플리케이션 서비스 테스트 (1)

0

100

2

정적 팩토리 메서드 관련 질문드립니다!

0

101

2

spotbug + @NonNullApi 로만 Null 방어가 될까요?

0

125

2

required 포트에 관해서

0

86

2

혹시 다음 편은 언제쯤 오픈할까요?

0

160

2

서비스 단위 테스트 코드 작성

0

92

2

domain 모듈에 entity를 정의한다고 했을때

0

90

2

여러 엔티티의 조합으로 리포트를 제공해야할 때

0

75

2

Member와 MemberDetail 엔티티를 나누는 기준에 대해

0

79

2