spring-webflux
reactor-core
'га боғлиқ ва асинхрон логика қуриғини шакллантириш ҳамда Reactive Streams'ни қўллаб-қувватлаш учун уни ички даражада ишлатади. Оддийда, WebFlux API Flux
ёки Mono
қайтариб беради (чунки улар ички даражада ишлатилади) ва Reactive Streams спецификациясидан ҳар қандай Publisher
ишлатишини олдиндан қабул қилади. Flux
'нинг Mono
'дан фойдаланишни таққослаш муҳим, чунки бу кўпчиликнинг қувватини ифода қилишга ёрдам беради – масалан, бир ёки бир неча асинхрон қийматлар кутиляптиме, бу қарор қабул қилишда муҳим бўлиши мумкин (масалан, HTTP-хабарларни кодлаш ёки декодлашда).
Аннотланган контроллерлар билан WebFlux'да, у дастур танлаган реактив китобхонага осонлик билан мослашади. Бу ReactiveAdapterRegistry
ёрдамида амалга оширилади, ки досприд каби реактив китобхонлар ва бошқа асинхрон турларни қўллаб-қувватлайди. Реестрга RxJava 3, Kotlin коррутини ва SmallRye Mutiny'ни қўллаб-қувватлаш ёзилдир, лекин сиз бошқа харидорлар адаптерларини ҳам рўйхатга олишингиз мумкин.
Spring Framework 5.3.11 версиясидан бошлаб, RxJava 1 ва 2нинг қўллаб-қувватланиши тугатилди, RxJava'нинг ҳаёт циклини якунлаш ва RxJava 3га янгилаш бўйича тавсияларига мувофиқ.
Функционал API (функционал локиётлар, WebClient
ва бошқалар) учун WebFlux API'нинг умумий қоидалари амалга оширилади – Flux
ва Mono
қайтариладиган қийматлар сифатида ишлатилади, Reactive Streams спецификациясидан Publisher
– ишловчи маълумот сифатида. Publisher
берилганда, бу мижоз ёки бошқа реактив китобхонадан бўлсин, у фақат номаълум семантика (0..N) билан қандайдир оқим сифатида қабул қилинган бўлиши мумкин. Агар семантика маълум бўлса, уни Flux
ёки Mono.from(Publisher)
билан ўраб қўйиш мумкин, ёки оддий Publisher
ни узатиш ўрнига.
Масалан, агар Publisher
мавжуд бўлса ва у Mono
эмас бўлса, JSON форматда Jackson кутубхонаси хабарларни ёзувчи дастур бир неча қийматларни қабул қилади. Агар медиа тури чексиз оқимни назарда тутса (масалан, application/json+stream
), қийматлар алоҳида ёзилади ва ташланади. Акс ҳолда, қийматлар рўйхатга жойланади ва JSON массиви шаклида чиқарилади.
GO TO FULL VERSION