diff --git a/pom.xml b/pom.xml
index 647e3ce..96fca03 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
@@ -51,16 +51,11 @@
lombok
true
-
- io.springfox
- springfox-swagger2
- 2.9.2
-
-
- io.springfox
- springfox-swagger-ui
- 2.9.2
-
+
+ io.springfox
+ springfox-boot-starter
+ 3.0.0
+
org.springframework.boot
spring-boot-starter-test
@@ -71,6 +66,11 @@
spring-security-test
test
+
+ org.junit.vintage
+ junit-vintage-engine
+ 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..003ab7b 100644
--- a/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java
+++ b/src/main/java/com/coding/exercise/bankapp/config/ApplicationConfig.java
@@ -2,9 +2,11 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@@ -12,13 +14,14 @@
@Configuration
@EnableSwagger2
-public class ApplicationConfig {
+public class ApplicationConfig implements WebMvcConfigurer {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
+ .apis(RequestHandlerSelectors.basePackage("com.coding.exercise.bankapp.controller"))
.paths(PathSelectors.any())
.build();
}
diff --git a/src/main/java/com/coding/exercise/bankapp/config/SpringfoxConfig.java b/src/main/java/com/coding/exercise/bankapp/config/SpringfoxConfig.java
new file mode 100644
index 0000000..d207c32
--- /dev/null
+++ b/src/main/java/com/coding/exercise/bankapp/config/SpringfoxConfig.java
@@ -0,0 +1,52 @@
+package com.coding.exercise.bankapp.config;
+
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.ReflectionUtils;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
+
+import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
+import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
+
+@Configuration
+public class SpringfoxConfig {
+
+ @Bean
+ public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
+ return new BeanPostProcessor() {
+
+ @Override
+ public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+ if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
+ customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
+ }
+ return bean;
+ }
+
+ private void customizeSpringfoxHandlerMappings(List mappings) {
+ List copy = mappings.stream()
+ .filter(mapping -> mapping.getPatternParser() == null)
+ .collect(Collectors.toList());
+ mappings.clear();
+ mappings.addAll(copy);
+ }
+
+ @SuppressWarnings("unchecked")
+ private List getHandlerMappings(Object bean) {
+ try {
+ Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
+ field.setAccessible(true);
+ return (List) field.get(bean);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ };
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index aa3d490..4dcfb25 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -9,3 +9,6 @@ spring:
h2:
console:
enabled: true
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher