102
Spring MVC 4.x Spring 5 Web Reactive Rossen Stoyanchev @rstoya05 Part 1

Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring MVC 4.xSpring 5 Web Reactive

Rossen Stoyanchev@rstoya05

Part 1

Page 2: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring MVC 4.3

Reactive programming for Java devs

Spring 5 Web Reactive

Page 3: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Shortcut Annotations

@RequestMapping

Page 4: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

@GetMapping

@PostMapping

@PutMapping

@DeleteMapping

Page 5: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 6: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 7: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 8: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

@RequestScope

@SessionScope

@ApplicationScope

Page 9: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 10: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 11: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

@RequestAttribute

@SessionAttribute

Page 12: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 13: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 14: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Not to be confused with:

@SessionAttributes

Page 15: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 16: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

@RestControllerAdvice

Page 17: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

@ModelAttribute(binding=false)

Page 18: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Pre-load Foo in the model

Foo object without binding

Form object with binding

Page 19: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

HTTP OPTIONS, HEAD

automated handling

Page 20: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

curl -v -X OPTIONS http://localhost:8080/foos/123

< HTTP/1.1 200 OK< Server: Apache-Coyote/1.1< Allow: GET,HEAD< Content-Length: 0

Page 21: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

curl --head http://localhost:8080/foos/123

HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: application/json;charset=UTF-8Content-Length: 155

Page 22: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

ForwardedHeaderFilter

Page 23: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Complements existing support

for “X-Forwarded-*” in

[ Mvc | Servlet ] UriComponentsBuilder

Page 24: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

RestTemplate

default URI variable values

Page 25: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 26: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Client Mock REST Tests

expected count + order of requests

Page 27: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive
Page 28: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring MVC 4.3

Reactive programming for Java devs

Spring 5 Web Reactive

Page 29: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Long RunningShift ToConcurrency

29

Page 30: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Self-sufficient apps

App server

Keep it simple, don’t distribute

30

Independent services

Cloud environment

Distributed apps10 years ago

Today

Page 31: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Impact on Programming Model

Imperative logic is not a simple path any more

Forced to deal with asynchronicity

Limits of scale

31

Page 32: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Fundamentally Asynchronous

Async and non-blocking by design

Small number of threads

Efficient scale

32

Page 33: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Design async API with Java Futures

33

Page 34: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Return a Value

34

...

...

Page 35: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Usage

35

Page 36: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Return Value with Future

36

...

May be thrown indifferent thread

Page 37: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Usage

37

Ugh

Page 38: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Return Value with CompletableFuture

38

...

...

Page 39: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Usage

39

Async callback

Page 40: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Return Collection

40

...

...

Page 41: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Return Void

41

...

...

Page 42: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Return Void

42

...

...

Success or Failurecallback

Page 43: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

CompletableFuture

43

Fundamentally the right idea for use in async APIs

Allows declarative composition of async logic

Lambdas keep it readable

Page 44: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

CompletableFuture

Not ideal for Collection return values

Nor for latency sensitive data sets

Nor large or infinite data sets

44

Page 45: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Async return valuesas a “stream” ?

Page 46: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

46

onNext onNext onNext

onError oronComplete

Page 47: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Return type Use case Notificationsvoid Success onComplete()

void Failure onError(Throwable)

User Match onNext(User), onComplete()

User No match onComplete()

User Failure onError(Throwable)

List<User> Two matches onNext(User), onNext(User), onComplete()

List<User> No match onComplete()

List<User> Failure onError(Throwable)

Page 48: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Java 8 Stream

48

Great example of the kind of API we’d like

Declarative composition of async logic per item

Lambdas keep it readable

Page 49: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Java 8 Stream

49

Built for collections

Not for active or “hot” source of data

Latency-sensitive data sequences

Page 50: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

50

Doug LeaReactive Streams & Java 9 initial announcement

No single best fluent async API [...]

Until now one missing category was "push" style operations on items as they become available from an active source.

Page 51: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Streams

51

Small API, spec rules, and TCK

Publish-subscribe with back pressure

Interoperability across async components and libraries

Page 52: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

52

Project Reactor

Reactive Streams library for the JVM

Declarative operations on items similar to Java 8 Stream

Flux and Mono reactive composable API types

Page 53: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Repository

Page 54: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Repository In Use

Page 55: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

onSubscribe

request(unbounded)

onNext(User: Jason)

onNext(User: Jay)

...

onComplete()

By default consume without back-pressure

Example output

Page 56: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring MVC 4.xSpring 5 Web Reactive

Rossen Stoyanchev@rstoya05

Part 2

Page 57: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring MVC 4.3

Reactive programming for Java devs

Spring 5 Web Reactive

Page 58: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Programming

A style of micro-architecture

Declarative, functional-style, composition of logic

The opposite of imperative

58

Page 59: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Imperative / Blocking

Page 60: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Functional /Neutral to Asynchronicity

Page 61: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Thread Pool StyleProcessing

61

Page 62: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Server Threads

Application Processing

150 ms 150 ms15 ms 15 ms

20 ms

250 ms

50 ms

150 ms

125 ms

75 ms

200 ms

Thread PoolThread Pool

Network Latency

Network Latency

Page 63: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Server Threads

Application Handling

Load Balancer

Requests Requests

Server Threads

Application Handling

Page 64: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Event Loop StyleProcessing

64

Page 65: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Application Processing

IOselector

worker worker worker

125 ms

75 ms

200 ms

20 ms

50 ms

150 ms

250 ms

Page 66: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

pan.addWater(() -> range.lowerHeat(() -> pan.addBrownRice(() -> pan.setTimeout(() -> { range.turnOff(); // ready... }, Duration.ofMinutes(40)))));

Non-blocking Application

Page 67: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Rise above the callbacks

Page 68: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

ReactiveX

DeclarativeFunctional, programming onObservable streams

Page 69: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Streams Specification

Async stream processingwith “reactive” back-pressure

Page 70: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

70

public interface Subscriber<T> {

void onSubscribe(Subscription sub);

void onNext(T item);

void onError(Throwable ex);

void onComplete();

}

public interface Subscription {

void request(long n);

void cancel();

}

public interface Publisher<T> {

void subscribe(Subscriber<? super T> subscriber);

}

Reactive Streams

Backpressure

Page 71: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Project Reactor

Reactive Streams + ReactiveX

Page 72: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactor Mono

Page 73: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactor Flux

Page 74: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Repository

Page 75: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Subscriber triggers flow of data

Reactive Repository in Use

Page 76: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

onSubscribe

request(unbounded)

onNext(User: Jason)

onNext(User: Jay)

...

onComplete()

By default consume without back-pressure

Example output

Page 77: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Consume Two Items at a Time

Page 78: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

onSubscribe

request(2)

onNext(User: Jason)

onNext(User: Jay)

request(2)

onNext(User: Joe)

onNext(User: John)

...

Producer complies withback-pressure

Example output

Page 79: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring MVC 4.3

Reactive programming for Java devs

Spring 5 Web Reactive

Page 80: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring Data Reactive

Page 81: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring Data Reactive

Page 82: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Processing Pipeline

RepositoryControllerWebFramework

HTTP Server

End-to-end back-pressure

Page 83: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Web Controller

Page 84: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Web Controller Spring 5

Page 85: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Web Controller / RxJava Spring 5

Page 86: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring Web MVC Spring Web Reactive

@Controller, @RequestMapping

Servlet API

Servlet Container

Reactive HTTP

Tomcat, Jetty, Servlet 3.1+,Netty, Undertow

Router Functions

Page 87: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive HTTP Adaptation

Page 88: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive HTTP Server Adaptation

Tomcat, Jetty, Servlet 3.1+ containers

Netty (Reactor Netty, RxNetty)

Undertow

Page 89: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Reactive Encoder and Decoder

Serialization to/from Flux<T> and Flux<DataBuffer>

JSON (Jackson) and XML (JAXB / Aalto)

Server-Sent Events

Resource with zero-copy file transfer

Page 90: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Along with Spring Web MVC

Operates on reactive HTTP request / response

Shared algorithms and mechanisms

Spring Web Reactive

Page 91: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Non-Blocking HTTP GET

Synchronous, non-blocking method

Async, non-blocking method

Page 92: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Non-Blocking HTTP POST

or

Page 93: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Server-Sent Events

Page 94: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Zero-Copy File Transfer

Page 95: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

WebClient

Page 96: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

WebClient / RxJava

Page 97: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Non-blocking WebClient Scatter/Gather

Page 98: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Functional Web Framework

No annotations, minimal, and transparent

Same reactive foundation

"Spring 5: Functional Web Framework" blog post

Page 99: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Functional-style Web Routing

Page 100: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

http://start.spring.io

Page 101: Spring MVC 4.x Spring 5 Web Reactive Part 1 @rstoya05 ... · Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive

Spring Boot “Web Reactive” Starter

Helpful instructions:

https://github.com/bclozel/spring-boot-web-reactive