diff --git a/README.md b/README.md
index 991b41a..3fa57be 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 17, Spring Boot, Spring Security and H2 DB
RESTful API to simulate simple banking operations.
@@ -38,7 +38,7 @@ https://projectlombok.org/setup/eclipse
### Prerequisites
-* Java 8
+* Java 17
* Spring Tool Suite 4 or similar IDE
* [Maven](https://maven.apache.org/) - Dependency Management
diff --git a/pom.xml b/pom.xml
index 647e3ce..7818306 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.1.4.RELEASE
+ 3.3.13
com.coding.exercise
@@ -15,7 +15,7 @@
Bank App Spring Boot Project
- 1.8
+ 17
@@ -41,31 +41,27 @@
spring-boot-devtools
runtime
-
- com.h2database
- h2
- runtime
-
-
- org.projectlombok
- lombok
- true
-
-
- io.springfox
- springfox-swagger2
- 2.9.2
-
-
- io.springfox
- springfox-swagger-ui
- 2.9.2
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
+
+ com.h2database
+ h2
+ 2.2.224
+ runtime
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ 2.6.0
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
org.springframework.security
spring-security-test
@@ -79,6 +75,14 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 17
+ 17
+
+
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/config/SecurityConfig.java b/src/main/java/com/coding/exercise/bankapp/config/SecurityConfig.java
index 1af7a3b..ec22069 100644
--- a/src/main/java/com/coding/exercise/bankapp/config/SecurityConfig.java
+++ b/src/main/java/com/coding/exercise/bankapp/config/SecurityConfig.java
@@ -1,26 +1,32 @@
package com.coding.exercise.bankapp.config;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.web.SecurityFilterChain;
/**
*
- * Spring security denied access to h2-console.
- * This configuration will resolve 403 forbidden error when accessing h2-console.
+ * Spring security configuration for H2 console access.
+ * This configuration resolves 403 forbidden error when accessing h2-console.
*
* @author sbathina
*
*/
@Configuration
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
+@EnableWebSecurity
+public class SecurityConfig {
- @Override
- protected void configure(HttpSecurity httpSecurity) throws Exception {
- httpSecurity.authorizeRequests().antMatchers("/").permitAll().and()
- .authorizeRequests().antMatchers("/h2-console/**").permitAll();
-
- httpSecurity.csrf().disable();
- httpSecurity.headers().frameOptions().disable();
+ @Bean
+ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
+ http
+ .authorizeHttpRequests(auth -> auth
+ .anyRequest().permitAll()
+ )
+ .csrf(csrf -> csrf.disable())
+ .headers(headers -> headers.frameOptions(frame -> frame.disable()));
+
+ return http.build();
}
}
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..8562076 100644
--- a/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java
+++ b/src/main/java/com/coding/exercise/bankapp/controller/AccountController.java
@@ -17,36 +17,20 @@
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;
-
@RestController
@RequestMapping("accounts")
-@Api(tags = { "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") })
-
public ResponseEntity