1. The purpose of this post
I would demo how to return multiple result objects from a SpringBoot controller method by using Vavr.
1.1 What is Vavr
According to the Vavr’s website:
Vavr is an object-functional language extension to Java 8, which aims to reduce the lines of code and increase code quality. It provides persistent collections, functional abstractions for error handling, concurrent programming, pattern matching and much more.
Because Vavr does not depend on any libraries (other than the JVM) you can easily add it as standalone .jar to your classpath.
- java 1.8+
- Vavr 0.9+
3. How to return multiple objects from a SpringBoot controller method by using Vavr’s Tuple
3.1 Add Vavr dependency to your pom
You can get vavr latest version from link
3.2 Write the controller
It’s very simple:
- We use Tuple2<String,Integer> as the return type of the method
- We add @ResponseBody to tell spring that we want this object to be serialized to String(Json)
- We called the new Tuple2<String,Integer>() to initialize the Tuple, because Tuple is immutable, we must initialize it when construt it.
3.3 Run the springboot app
Run the SpringBoot app, and use curl to call the method:
You can see that the Vavr’s Tuple has been serialized to Json.
Vavr’s Tuple is a good way to encapsulate temporary immutable objects, it’s not necessary to define such objects that only be used once.
To be continued on this topic…