版本
<parent>
<groupId></groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.0</version>
</parent>
版本
<dependency>
<groupId></groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
原因分析:
spring5支持PathMatchConfigurer导致
启动报错解决方案1:
重写
两个类;
将PatternsRequestCondition改为PathPatternsRequestCondition;
package ;
import static ;
import static ;
import ;
import ;
import ;
import ;
/**
* swagger3.0兼容springBoot2.6.0处理
*/
public class WebMvcPatternsRequestConditionWrapper
implements
<PatternsRequestCondition> {
private final String contextPath;
private final PathPatternsRequestCondition condition;
public WebMvcPatternsRequestConditionWrapper(
String contextPath,
PathPatternsRequestCondition condition) {
= contextPath;
= condition;
}
@Override
public combine(
<PatternsRequestCondition> other) {
if (other instanceof WebMvcPatternsRequestConditionWrapper && !(other)) {
return new WebMvcPatternsRequestConditionWrapper(
contextPath,
(((WebMvcPatternsRequestConditionWrapper) other).condition));
}
return this;
}
@Override
public Set<String> getPatterns() {
return ().stream()
.map(p -> ("%s/%s", maybeChompTrailingSlash(contextPath),
maybeChompLeadingSlash(p)))
.collect(());
}
@Override
public boolean equals(Object o) {
if (o instanceof WebMvcPatternsRequestConditionWrapper) {
return (((WebMvcPatternsRequestConditionWrapper) o).condition);
}
return false;
}
@Override
public int hashCode() {
return ();
}
@Override
public String toString() {
return ();
}
}
package ;
import static ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
/**
* swagger3.0兼容springBoot2.6.0处理
*/
public class WebMvcRequestHandler implements RequestHandler {
private final String contextPath;
private final HandlerMethodResolver methodResolver;
private final RequestMappingInfo requestMapping;
private final HandlerMethod handlerMethod;
public WebMvcRequestHandler(
String contextPath,
HandlerMethodResolver methodResolver,
RequestMappingInfo requestMapping,
HandlerMethod handlerMethod) {
= contextPath;
= methodResolver;
= requestMapping;
= handlerMethod;
}
@Override
public HandlerMethod getHandlerMethod() {
return handlerMethod;
}
@Override
public RequestHandler combine(RequestHandler other) {
return this;
}
@Override
public Class<?> declaringClass() {
return ();
}
@Override
public boolean isAnnotatedWith(Class<? extends Annotation> annotation) {
return null != ((), annotation);
}
@Override
public PatternsRequestCondition getPatternsCondition() {
return new WebMvcPatternsRequestConditionWrapper(
contextPath,
());
}
@Override
public String groupName() {
return (handlerMethod);
}
@Override
public String getName() {
return ().getName();
}
@Override
public Set<RequestMethod> supportedMethods() {
return ().getMethods();
}
@Override
public Set<MediaType> produces() {
return ().getProducibleMediaTypes();
}
@Override
public Set<MediaType> consumes() {
return ().getConsumableMediaTypes();
}
@Override
public Set<NameValueExpression<String>> headers() {
return WebMvcNameValueExpressionWrapper
.from(().getExpressions());
}
@Override
public Set<NameValueExpression<String>> params() {
return WebMvcNameValueExpressionWrapper
.from(().getExpressions());
}
@Override
public <T extends Annotation> Optional<T> findAnnotation(Class<T> annotation) {
return ofNullable(((), annotation));
}
@Override
public RequestHandlerKey key() {
return new RequestHandlerKey(
().getPatternValues(),
().getMethods(),
().getConsumableMediaTypes(),
().getProducibleMediaTypes());
}
@Override
public <?> getRequestMapping() {
return new WebMvcRequestMappingInfoWrapper(requestMapping);
}
@Override
public List<ResolvedMethodParameter> getParameters() {
return (handlerMethod);
}
@Override
public ResolvedType getReturnType() {
return (handlerMethod);
}
@Override
public <T extends Annotation> Optional<T> findControllerAnnotation(Class<T> annotation) {
return ofNullable(((), annotation));
}
@Override
public String toString() {
return new StringJoiner(", ", () + "{", "}")
.add("requestMapping=" + requestMapping)
.add("handlerMethod=" + handlerMethod)
.add("key=" + key())
.toString();
}
}