Kotlin Spring WebFlux Annotation-Based RestAPIs - with SpringBoot 2
Reactive programming is about non-blocking applications. And Spring Framework 5 includes a new spring-webflux module, supports Reactive Streams for communicating backpressure across async components and libraries. So in the tutorial, JavaSampleApproach will guide you through the steps for creating a Kotlin Spring WebFlux Annotation-Based RestAPIs with SpringBoot 2.
Related posts:
I. Technologies
– Java: 1.8
– Maven: 3.5.2
– Spring Tool Suite: Version 3.9.0.RELEASE
– Spring Boot: 2.0.0.M7
- Kotlin 1.1.61 – Spring Boot Starter Webflux
- Postman client
II. Spring WebFlux
Spring Framework 5.0 supports WebFlux with fully asynchronous and non-blocking and does NOT require the Servlet API(Unlike Spring MVC).
Spring WebFlux supports 2 distinct programming models:
– Annotation-based with @RestController
– Functional with Java 8 lambda style
In the tutorial, we will introduce WebFlux with Annotation-based and Kotlin language.
For starting with WebFlux, SpringBoot supports a collection dependency: spring-boot-starter-webflux.
Kotlin sample code:
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@RestController
@RequestMapping(value="/api/customer")
class RestControllerAPIs {
@GetMapping
fun getAll(): Flux {
return Flux.fromIterable(ArrayList(custStores.values));
}
@GetMapping("/{id}")
fun getCustomer(@PathVariable id: Long): Mono {
return Mono.justOrEmpty(custStores.get(id))
}
...
}
– reactor.core.publisher.Flux
: is a standard Publisher representing a reactive sequence of 0..N items, optionally terminated by either a success signal or an error.
– reactor.core.publisher.Mono
: Mono is a specialized Publisher that emits at most single-valued-or-empty result.
Top comments (0)