DEV Community

loizenai
loizenai

Posted on

Kotlin Spring WebFlux Annotation-Based RestAPIs - with SpringBoot 2

https://grokonez.com/spring-framework/spring-boot/kotlin-spring-boot/kotlin-spring-webflux-annotation-based-restapis-springboot-2

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.

https://grokonez.com/spring-framework/spring-boot/kotlin-spring-boot/kotlin-spring-webflux-annotation-based-restapis-springboot-2

Top comments (0)