This repository contains a sample application that uses the functional web framework introduced in Spring 5. It mainly consists of the following types:
Class | Description |
---|---|
Person |
POJO representing a person |
PersonRepository |
Reactive repository for Person |
DummyPersonRepository |
Dummy implementation of PersonRepository |
PersonHandler |
Web handler that exposes a PersonRepository |
PersonRouter |
Provides a functional RouterFunction |
PersonController |
A reactive RestController |
Server |
Contains a main method to start the server |
In the main method in Server
there are four ways to start the application:
ControllerConfiguration
: Spring Context + request processing withPersonController
RoutingConfiguration
: Spring Context + request processing withRouterFunction
- 'functionalBeanRegistration`: Same as first one, but with new programmatic way to register beans
- standalone: get HttpHandler directly from RouterFunction, no Spring Context
Additionally you can choose with what server to start, see the next two points.
- Build using maven
- Run the
org.springframework.samples.web.reactive.function.Server
class
- Comment out the
startReactorServer()
line inServer.java
- Uncomment the
startTomcatServer()
line inServer.java
- Build using maven
- Run the
org.springframework.samples.web.reactive.function.Server
class
Instead of using a Rest-Client of your choice, here are some sample curl
commands that access resources exposed
by this sample:
curl -v 'http://localhost:8080/person'
curl -v 'http://localhost:8080/person/1'
curl -d '{"name":"Jack Doe","age":"16"}' -H 'Content-Type: application/json' -v 'http://localhost:8080/person'
This project was forked from https://github.com/poutsma/webflux-functional-demo by Arjen Poutsma. The original project is released under version 2.0 of the Apache License.