Skip to content

Commit 75ed962

Browse files
committed
swagger support spring boot 2.6.x
1 parent a8f3a85 commit 75ed962

File tree

3 files changed

+64
-12
lines changed

3 files changed

+64
-12
lines changed

src/main/java/app/SwaggerConfig.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
11
package app;
22

3+
import org.springframework.beans.BeansException;
4+
import org.springframework.beans.factory.config.BeanPostProcessor;
35
import org.springframework.context.annotation.Bean;
46
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.util.ReflectionUtils;
8+
import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
59
import springfox.documentation.builders.PathSelectors;
610
import springfox.documentation.builders.RequestHandlerSelectors;
711
import springfox.documentation.spi.DocumentationType;
812
import springfox.documentation.spring.web.plugins.Docket;
13+
import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
14+
import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
15+
16+
import java.lang.reflect.Field;
17+
import java.util.List;
18+
import java.util.stream.Collectors;
919

1020
/**
1121
* @author zhihao zhang
@@ -21,4 +31,41 @@ public Docket api() {
2131
.paths(PathSelectors.any())
2232
.build();
2333
}
34+
35+
@Bean
36+
public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
37+
return new BeanPostProcessor() {
38+
39+
@Override
40+
public Object postProcessAfterInitialization(Object bean, String beanName)
41+
throws BeansException {
42+
if (bean instanceof WebMvcRequestHandlerProvider
43+
|| bean instanceof WebFluxRequestHandlerProvider) {
44+
customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
45+
}
46+
return bean;
47+
}
48+
49+
private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(
50+
List<T> mappings) {
51+
List<T> copy =
52+
mappings.stream()
53+
.filter(mapping -> mapping.getPatternParser() == null)
54+
.collect(Collectors.toList());
55+
mappings.clear();
56+
mappings.addAll(copy);
57+
}
58+
59+
@SuppressWarnings("unchecked")
60+
private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
61+
try {
62+
Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
63+
field.setAccessible(true);
64+
return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
65+
} catch (IllegalArgumentException | IllegalAccessException e) {
66+
throw new IllegalStateException(e);
67+
}
68+
}
69+
};
70+
}
2471
}
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
package app.util;
22

3-
import lombok.experimental.UtilityClass;
43

54
/**
65
* @author zhihao zhang
76
* @since 3/8/20
87
*/
9-
10-
@UtilityClass
11-
public class ConstantUtils {
12-
public final String LARGE = "large";
13-
public final String SEPARATOR = ",";
8+
public final class ConstantUtils {
9+
public static final String LARGE = "large";
10+
public static final String SEPARATOR = ",";
1411
}

src/main/resources/application.yml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ spring:
44
url: jdbc:postgresql://localhost:5432/mydb
55
password: postgres
66
username: postgres
7-
initialization-mode: never
87

98
flyway:
109
enabled: true
@@ -33,11 +32,20 @@ spring:
3332
main:
3433
lazy-initialization: true
3534

36-
resources:
37-
cache:
38-
cachecontrol:
39-
max-age: 120
40-
must-revalidate: true
35+
web:
36+
resources:
37+
cache:
38+
cachecontrol:
39+
max-age: 120
40+
must-revalidate: true
41+
sql:
42+
init:
43+
mode: never
44+
45+
46+
mvc:
47+
pathmatch:
48+
matching-strategy: ant_path_matcher
4149

4250
server:
4351
port: ${PORT:8080}

0 commit comments

Comments
 (0)