9-modul · 8-dars: MapStruct · YAML · @Async
Daraja: Ilg'or
MapStruct · YAML · @Async. Spring Boot bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi MapStruct · YAML · @Async tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya MapStruct annotation processor sifatida compile vaqtida mapping kodini yaratadi. Reflectionga tayanmasdan entity va DTO orasida aniq mapping beradi; field nomi farq qilsa @Mapping bilan ko'rsatiladi. Generated source ko'rib chiqiladi, null siyosati belgilanadi; parol kabi fieldlar output DTOga tasodifan o'tmasin. Properties tekis key-value, YAML esa indentation orqali Map va Listni ifodalaydi. @ConfigurationProperties guruhni typed objectga bog'laydi, @Validated bilan tekshirish mumkin. YAMLdagi | yangi qatorlarni saqlaydi, > ko'p oddiy qatorlarni bo'shliq bilan buklaydi. Sirlarni repoga qo'shmang; environment yoki secret store orqali bering. @Async proxy orqali chaqiruvni TaskExecutorga topshiradi; @EnableAsync va cheklangan pool/queue zarur. Self-invocation odatda proxyga tushmaydi. CompletableFuture natijasidagi xato callerga future orqali keladi; void metod xatosi uchun AsyncUncaughtExceptionHandler kerak bo'lishi mumkin. Thread-local security/transaction context avtomatik ko'chadi deb hisoblamang.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/9-module%28Spring%20Boot%29.md) [Rasmiy qo‘llanma](https://docs.spring.io/spring-boot/reference/)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
@org.springframework.boot.context.properties.ConfigurationProperties("study")
record StudySettings(java.util.List<String> modules, java.util.Map<String,Integer> limits) {}
// Bean registration: @EnableConfigurationProperties(StudySettings.class).
Keng tarqalgan xatolar
- Cheksiz async queue yuklama oshganda RAMni tugatadi; pool chegarasi va rad etish siyosatini belgilang.
Mashqlar
- YAMLdagi list va mapni typed konfiguratsiyaga o'qing, noto'g'ri limitda startup rad etilishini sinang.
- @Async pool ga chegara qo'yib, ko'p vazifa yuborilganda nima bo'lishini kuzating.
Teglar: pdp, nazariya, modul-09