Javax @NotNull annotasyonunu kastediyorsan evet. Sadece DTO icin degil fonksiyonlar icin de kullanilabilir.
Ancak burada runtime vs compile time ayrimini iyi anlamak gerek. Sen bir parametreyi ya da field'i @NotNull olarak isaretleyebilirsin fakat bunu process eden birileri olmazsa onlar null olabilirler. Runtime sirasinda data geldiginde eger isaretli alan null ise hata veren bir mekanizmaya ihtiyacin var. Spring bunu yapiyor, Hibernate de yapiyor. Baska yapan reflection kutuphaneleri de var.
Konuda onceden tartistigimiz Optional<> muhabbeti compile time bir olay.
Yine IDEA'nin kendi @NotNull annotasyonu da var. Compile zamanda hata alirsin eger dogru sekilde ayarladiysan build konfigurasyonunu.