기존에 있던 springframework.lang에 있던 null 관련 어노테이션은 사용하지 않기로 하고 아래 jSpecify 들어온다함


https://github.com/jspecify/jspecify/tree/main/src/main/java/org/jspecify/annotations


이거 반영된다고 하네


이거 두개는 잘 알테고

- @NonNull

- @Nullable


@NullMarked, @NullUnMarked 이건 새로 나오던데


@NullMarked로 모듈/패키지/클래스/메서드/인터페이스/Enum/생성자 단위로 적용 됐으면 해당 적용된 내부에 있는 모든 값들은 NonNull 적용


@NullUnMakred는 적용하면 @NullMarked를 무효화시킴

ex) x클래스에 @NullMarked를 붙이고, x클래스의 A메서드에 @NullUnMakred를 달아두면 A메서드에 있는 값들은 Nullable함


@NullMarked와 @NullUnMarked 차이점은 @Target(ElementType.MODULE이 @NullMarked에만 있다는 점인데, 아무래도 @NullUnMarked를 적용하려면 결국 상위에 @NullMarked가 있어야 하는 거니까 차이점을 둔 것으로 보임