diff --git a/spring-boot-modules/spring-boot-swagger/pom.xml b/spring-boot-modules/spring-boot-swagger/pom.xml
index 87ee5f04cb..6e91189802 100644
--- a/spring-boot-modules/spring-boot-swagger/pom.xml
+++ b/spring-boot-modules/spring-boot-swagger/pom.xml
@@ -25,6 +25,21 @@
springfox-boot-starter
${springfox.version}
+
+ io.springfox
+ springfox-swagger2
+ ${springfox-swagger2.version}
+
+
+ io.swagger.core.v3
+ swagger-jaxrs2
+ ${swagger-jaxrs2.version}
+
+
+ javax.ws.rs
+ javax.ws.rs-api
+ ${javax.ws.rs-api.version}
+
@@ -33,11 +48,103 @@
org.springframework.boot
spring-boot-maven-plugin
+
+
+
+ com.github.kongchen
+ swagger-maven-plugin
+ 3.1.3
+
+
+
+ false
+ com.baeldung.swagger2pdf.controller.UserController
+ /api
+
+ DEMO REST API
+ A simple DEMO project for REST API documentation
+ v1
+
+ ${project.build.directory}/api
+ true
+
+
+
+
+
+ package
+
+ generate
+
+
+
+
+
+ io.github.robwin
+ swagger2markup-maven-plugin
+ 0.9.3
+
+ ${project.build.directory}/api
+ ${generated.asciidoc.directory}
+ asciidoc
+
+
+
+ package
+
+ process-swagger
+
+
+
+
+
+ org.asciidoctor
+ asciidoctor-maven-plugin
+ 2.2.1
+
+
+
+ org.asciidoctor
+ asciidoctorj-pdf
+ 1.6.0
+
+
+
+ ${project.build.outputDirectory}/../asciidoc
+ overview.adoc
+
+ book
+ left
+ 2
+ ${generated.asciidoc.directory}
+
+
+
+
+
+ asciidoc-to-pdf
+ package
+
+ process-asciidoc
+
+
+ pdf
+ ${project.build.outputDirectory}/api/pdf
+
+
+
+
+
+
3.0.0
+ ${project.build.outputDirectory}/asciidoc
+ 2.10.5
+ 2.1.11
+ 2.1
-
\ No newline at end of file
+
diff --git a/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/controller/UserController.java b/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/controller/UserController.java
new file mode 100644
index 0000000000..380bac6f8c
--- /dev/null
+++ b/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/controller/UserController.java
@@ -0,0 +1,63 @@
+package com.baeldung.swagger2pdf.controller;
+
+import com.baeldung.swagger2pdf.objects.User;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.NonNull;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Controller
+@Api(value = "/api", description = "A controller for user management")
+@RequestMapping("/user")
+@ResponseStatus(HttpStatus.OK)
+public class UserController {
+
+ static List users;
+
+ static {
+ users = new ArrayList<>();
+ users.add(new User("Mark", "Thompson", 23));
+ users.add(new User("Kate", "Jordan", 22));
+ }
+
+ @ApiOperation(value = "Retrieves all the users")
+ @RequestMapping(value = "/users",
+ method = RequestMethod.GET,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public List getUsers() {
+ return users;
+ }
+
+ @ApiOperation(value = "Retrieves a user based on first name")
+ @RequestMapping(value = "/user",
+ method = RequestMethod.GET,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public User getUser(@NonNull @RequestParam String firstName) {
+
+ if (firstName.isEmpty()) {
+ return null;
+ }
+
+ return users.stream()
+ .filter(user -> user.getFirstName().equals(firstName))
+ .findAny()
+ .orElse(null);
+
+ }
+
+ @ApiOperation(value = "Adds a user.")
+ @RequestMapping(value = "/user",
+ method = RequestMethod.POST,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public List addUser(@NonNull @RequestBody User user) {
+ users.add(user);
+ return users;
+ }
+}
+
diff --git a/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/objects/User.java b/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/objects/User.java
new file mode 100644
index 0000000000..8c59cb246a
--- /dev/null
+++ b/spring-boot-modules/spring-boot-swagger/src/main/java/com/baeldung/swagger2pdf/objects/User.java
@@ -0,0 +1,12 @@
+package com.baeldung.swagger2pdf.objects;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class User {
+ private String firstName;
+ private String lastName;
+ private int age;
+}