diff --git a/README.md b/README.md
index 991b41a..b76a2b2 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Banking Application using Java8, Spring Boot, Spring Security and H2 DB
+# Banking Application using Java 11, Spring Boot, Spring Security and H2 DB
RESTful API to simulate simple banking operations.
@@ -38,9 +38,9 @@ https://projectlombok.org/setup/eclipse
### Prerequisites
-* Java 8
+* Java 11 JDK (ensure JAVA_HOME environment variable is set to Java 11 installation)
* Spring Tool Suite 4 or similar IDE
-* [Maven](https://maven.apache.org/) - Dependency Management
+* [Maven](https://maven.apache.org/) 3.6+ - Dependency Management
### Maven Dependencies
@@ -52,8 +52,7 @@ spring-boot-starter-web
spring-boot-devtools
h2 - Inmemory database
lombok - to reduce boilerplate code
-springfox-swagger2
-springfox-swagger-ui
+springdoc-openapi-ui - OpenAPI 3.0 documentation
spring-boot-starter-test
spring-security-test
@@ -64,10 +63,12 @@ spring-security-test
Please find the Rest API documentation in the below url
```
-http://localhost:8989/bank-api/swagger-ui.html
+http://localhost:8989/bank-api/swagger-ui/index.html
```
+Note: SpringDoc OpenAPI uses a different URL pattern than the legacy Springfox implementation.
+
## H2 In-Memory Database
Make sure to use jdbc:h2:mem:testdb as your jdbc url. If you intend to you use custom database name, please
diff --git a/pom.xml b/pom.xml
index 36931d2..797732f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.1.4.RELEASE
+ 2.7.18
com.coding.exercise
@@ -15,7 +15,7 @@
Bank App Spring Boot Project
- 1.8
+ 11
@@ -52,15 +52,11 @@
true
- io.springfox
- springfox-swagger2
- 2.9.2
+ org.springdoc
+ springdoc-openapi-ui
+ 1.6.15
-
- io.springfox
- springfox-swagger-ui
- 2.10.0
-
+
org.springframework.boot
spring-boot-starter-test
diff --git a/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java b/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java
index 67845f3..0df0ffe 100644
--- a/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java
+++ b/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java
@@ -3,29 +3,18 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
@Configuration
-@EnableSwagger2
public class ApplicationConfig {
@Bean
- public Docket api() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- .paths(PathSelectors.any())
- .build();
- }
-
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder().title("BANKING APPLICATION REST API")
- .description("API for Banking Application.")
- .version("1.0.0").build();
+ public OpenAPI customOpenAPI() {
+ return new OpenAPI()
+ .info(new Info()
+ .title("BANKING APPLICATION REST API")
+ .description("API for Banking Application.")
+ .version("1.0.0"));
}
}
diff --git a/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java b/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java
index b35f625..d0038e2 100644
--- a/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java
+++ b/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java
@@ -17,24 +17,24 @@
import com.coding.exercise.bankapp.domain.TransferDetails;
import com.coding.exercise.bankapp.service.BankingServiceImpl;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
@RestController
@RequestMapping("accounts")
-@Api(tags = { "Accounts and Transactions REST endpoints" })
+@Tag(name = "Accounts and Transactions REST endpoints")
public class AccountController {
@Autowired
private BankingServiceImpl bankingService;
@GetMapping(path = "/{accountNumber}")
- @ApiOperation(value = "Get account details", notes = "Find account details by account number")
- @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"),
- @ApiResponse(code = 400, message = "Bad Request"),
- @ApiResponse(code = 500, message = "Internal Server Error") })
+ @Operation(summary = "Get account details", description = "Find account details by account number")
+ @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Success"),
+ @ApiResponse(responseCode = "400", description = "Bad Request"),
+ @ApiResponse(responseCode = "500", description = "Internal Server Error") })
public ResponseEntity