Java null-xavfsizlikni o'zining tiplar tizimida ifodalash imkoniyatiga ega emasligiga qaramasdan, Spring Framework endi org.springframework.lang paketida quyidagi annotatsiyalarni o'z ichiga oladi, shunda siz API-interfeyslar va maydonlar uchun null-xavfsizlikni e'lon qilishingiz mumkin:
-
@Nullable: Ma'lum bir parametr, qaytarilgan qiymat yoki maydonnullbo'lishi mumkinligini bildiruvchi annotatsiya. -
@NonNull: Ma'lum bir parametr, qaytarilgan qiymat yoki maydonnullbo'lishi mumkin emasligini bildiruvchi annotatsiya (bu@NonNullApiva@NonNullFieldsannotatsiyalari qo'llaniladigan parametrlar/qaytarilgan qiymatlar va maydonlar uchun kerak emas). -
@NonNullApi: Paket darajasidagi annotatsiya bo'lib, parametrlar va qaytarilgan qiymatlar uchun non-null semantikasini sukut bo'yicha e'lon qiladi. -
@NonNullFields: Paket darajasidagi annotatsiya bo'lib, maydonlar uchun non-null semantikasini sukut bo'yicha e'lon qiladi.
Spring Framework o'zi bu annotatsiyalarni samarali ishlatadi, lekin ular Spring asosidagi har qanday Java-loyihada null-xavfsiz API-interfeyslarni e'lon qilish va xohishga ko'ra null-xavfsiz maydonlarni e'lon qilish uchun ham ishlatilishi mumkin. Generik tur argumentlari, uzunligi o'zgaruvchan argumentlar (varargs) va massiv elementlari uchun null qiymatini qabul qilishi hozircha qo'llab-quvvatlanmaydi, lekin keyingi chiqarilishlarda qo'shilishi kerak. To'liq ma'lumotni SPR-15942 da ko'ring. Null qiymatlar qabul qilinishi mumkin bo'lgan o'zgaruvchilarni e'lon qilish Spring Framework ning chiqishlar, shu jumladan mayda versiyalar orasida yaxshilanadi deb kutilmoqda. Metodning ichki qismida ishlatiladigan turlar uchun null qiymatini qabul qilish bu xususiyat doirasidan tashqarida.
Foydalanish misollari
Spring Framework API-interfeysi uchun null qiymatini qabul qilish imkoniyatini aniq e'lon qilishdan tashqari, bu annotatsiyalar IDE (masalan, IDEA yoki Eclipse) uchun null-xavfsizlikka oid foydali ogohlantirishlar uchun ishlatilishi mumkin, bu NullPointerException ni bajarish vaqtida oldini olish imkonini beradi.
Shuningdek, ular Spring API-interfeysini Kotlin loyihalarida null-xavfsiz qilish uchun ishlatiladi, chunki Kotlin aslida null-xavfsizlikni qo'llab-quvvatlaydi. Qo'shimcha ma'lumotni Kotlin-ni qo'llab-quvvatlash hujjatlarida topishingiz mumkin.
JSR-305 Meta-annotatsiyalari
Spring annotatsiyalar JSR-305 dan (JSR 305) olishgan meta-annotatsiyalar bilan meta-annotatsiya qilingan (Joriy vaqtda amalga oshirilmaydi, lekin keng tarqalgan JSR). JSR-305 dan meta-annotatsiyalar orqali IDEA yoki Kotlin kabi vositalar yetkazuvchilar, Spring annotatsiyalarini qo'llab-quvvatlashni qattiq kodlamasdan, umuman null-xavfsizlikni qo'llab-quvvatlash imkonini beradi.
Spring null-xavfsiz API-interfeyslaridan foydalanish uchun JSR-305 ga loyiha classpath-da bog'liq qilish talab qilinmaydi va tavsiya etilmaydi. Faqat Spring asosidagi kutubxona loyihalari, o'z kod bazasida null-xavfsiz annotatsiyalarni qo'llagan holda, com.google.code.findbugs:jsr305:3.0.2 ni Gradle dan compileOnly konfiguratsiyasi yoki Maven dan provided doirasini qo'shishi kerak, kompilatsiya haqida ogohlantirishlarni olishdan qochish uchun.
GO TO FULL VERSION