JavaRush /Kurslar /All lectures for UZ purposes /Spring Null-Safety annotatsiyalari

Spring Null-Safety annotatsiyalari

All lectures for UZ purposes
Daraja, Dars
Mavjud

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 maydon null bo'lishi mumkinligini bildiruvchi annotatsiya.

  • @NonNull: Ma'lum bir parametr, qaytarilgan qiymat yoki maydon null bo'lishi mumkin emasligini bildiruvchi annotatsiya (bu @NonNullApi va @NonNullFields annotatsiyalari 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.

Reactor va Spring Data kabi boshqa keng tarqalgan kutubxonalar ham null-xavfsiz API-interfeyslarga ega, ular null qiymatini qabul qilish imkoniyatini bir xil tashkil qilib, Spring asosidagi ilovalar ishlab chiquvchilariga izchil umumiy tajriba taqdim etadi.

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.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION