정식 스펙은 아님 → Spring Framework에는 사용하려 함
정적 분석으로 어노테이션 체크
package-info.java를 통해서 해당 패키지 하단의 모든 필드를 NonNull 상태로 만들어줌

@NonNull과 @NotNull은 이름은 비슷하지만, 출처와 동작 방식이 다르고, 실제 코드에서의 역할도 미묘하게 다르다.
아래에서 정리해볼게.
둘 다 “이 변수나 매개변수는 null이 되면 안 된다”는 의미를 나타냄.
즉, null 값 방지를 위한 어노테이션이야.
하지만 어디에서, 어떻게 작동하는지가 다르다.